C++ to Python
思路:
把 “std::make_tuple” 中的字符忽略即可。
代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
map<char,int>a;
string ss="std::make_tuple";
int main()
{
int t;
string s;
cin>>t;
for(int i=0;i<ss.size();i++)a[ss[i]]=1;
while(t--)
{
cin>>s;
for(int i=0;i<s.size();i++)
{
if(!a[s[i]])cout<<s[i];
}
cout<<endl;
}
return 0;
}
Snatch Groceries
思路:
对于给定的所有区间按从小到大排序,先按左端点排序,如果左端点相等按照右端点排序。因为服务系统按照时间来服务,所以直接按排序后的顺序递归区间判断,如果当前区间的earlist<=上一个区间的latest,则服务系统在上一个区间崩溃,这两个区间都无法服务。求系统可以服务多少个。
代码:
#include<bits/stdc++.h>
#define N 100010
#define ll long long
using namespace std;
ll t,n;
struct node
{
int a,b;
}p[N];
bool cmp1(struct node x, struct node y)
{
if(x.a==y.a) return x.b<y.b;
else return x.a<y.a;
}
int main()
{
cin>>t;
while(t--)
{
scanf("%lld",&n);
//p[0].a=0,p[0].b=0,p[0].c=0;
ll ans=0;
for(int i=1; i<=n; i++)
{
scanf("%d%d",&p[i].a,&p[i].b);
}
sort(p+1,p+1+n,cmp1);
if(n==1)printf("1\n");
else
{
for(int i=2; i<=n; i++)
{
if(p[i].a>p[i-1].b)
{
ans++;
if(i==n)ans++;
}
else break;
}
printf("%lld\n",ans);
}
}
return 0;
}
ShuanQ
思路:
由于P×Q≡1(modM)
所以P×Q-1≡0(modM)
因此m一定是P×Q-1的一个质因数。
所以我们只要找到P×Q-1是否有一个大于P,Q的质因数即可。
递归i=1到根号P×Q-1的所有因子,判断P×Q-1/i是否为质数即可。
如果存在m,根据式子x*q%m输出答案;否则输出“shuanQ”。
代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int t;
ll p,q,x;
bool pan(ll a)
{
if(a<=1)return false;
for(int i=2;i<=sqrt(a);i++)
{
if(a%i==0)return false;
else continue;
}
return true;
}
int main()
{
cin>>t;
while(t--)
{
cin>>p>>q>>x;
ll pq1=p*q-1;
int temp=0;
for(int i=1;i<=sqrt(pq1);i++)
{
if(pq1%i==0)
{
if(pan(pq1/i))
{
temp=1;
cout<<x*q%(pq1/i)<<endl;
break;
}
}
}
if(temp==0)cout<<"shuanQ"<<endl;
}
return 0;
}
Luxury cruise ship
思路:
学姐写的,直接暴力+算法优化。
代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int t;
ll n;
int main()
{
cin>>t;
ll a=7,b=31,c=365;
while(t--)
{
scanf("%lld",&n);
ll ans=-1;
ll num_c=n/c;
bool fl=false;
for(int num_b=(n-num_c*c)/b;num_b>=0;num_b--)
{
if((n-num_c*c-num_b*b)%a==0)
{
ll num_a=(n-num_c*c-num_b*b)/a;
ans=num_c+num_b+num_a;
fl=true;
// cout<<num_a<<" "<<num_b<<" "<<num_c<<endl;
break;
}
}
if(fl==false)
{
ll num_c=n/c-1;
if(num_c<0) fl=true;
for(int num_b=(n-num_c*c)/b;num_b>=0&&!fl;num_b--)
{
if((n-num_c*c-num_b*b)%a==0)
{
ll num_a=(n-num_c*c-num_b*b)/a;
ans=num_c+num_b+num_a;
// cout<<num_a<<" "<<num_b<<" "<<num_c<<endl;
break;
}
}
}
cout<<ans<<endl;
}
return 0;
}