VJ2020-06-30

    技术2022-07-10  98

    A - Drazil and Date 签到题。 三种情况: x+y>n 显然无法达到 x+y==n 正好能到达 x+y<n 判断(n-x-y)的奇偶性:奇-不能;偶-能。 注意x,y的取值可能为负。

    #include<bits/stdc++.h> using namespace std; int n,a,b; int main() { while(cin>>a>>b>>n) { int t=abs(a)+abs(b); if(t>n) cout<<"No"<<endl; else if(t==n) cout<<"Yes"<<endl; else { if((n-t)%2) cout<<"No"<<endl; else cout<<"Yes"<<endl; } } return 0; }

    B - Drazil and His Happy Friends 题目解读: 最多100个,直接暴力。先输入男生数量n再输入女生数量m.输入happy男生的数量b,再输入b个happy 男生的编号。输入happy女生的数量g,再输入g个happy女生的编号。按照第i天编号为[i%n]的男生,编号为[i%m]的女生只要有一个happy另一个就happy,否则保持不变的原则进行操作即可,最后判断男生女生是否能够全部变为happy。注意天数开大一点。

    #include<bits/stdc++.h> using namespace std; int a[110],b[110]; int main() { int n,m; while(cin>>n>>m) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); int c;cin>>c; for(int i=0;i<c;i++) { int t;cin>>t; a[t]=1; } int g;cin>>g; for(int i=0;i<g;i++) { int t;cin>>t; b[t]=1; } for(int i=0;i<10000;i++) { if(a[i%n]||b[i%m]) a[i%n]=1,b[i%m]=1; } int f=1; for(int i=0;i<n;i++) if(!a[i]) f=0; for(int i=0;i<m;i++) if(!b[i]) f=0; if(f) cout<<"Yes"<<endl; else cout<<"No"<<endl; } }

    C - Drazil and Factorial 模拟:求a的最大数。显然位数越多越大,我们给a的每位数进行分解即可,最后统计一下。例如9可以分解成2,3,3,7 9!=2!*3!*3!*7!.

    #include<bits/stdc++.h> using namespace std; int a[10]; int main() { int n; while(cin>>n) { string s; cin>>s; memset(a,0,sizeof(a)); for(int i=0;i<n;i++) { if(s[i]=='2') { a[2]++; } else if(s[i]=='3') { a[3]++; } else if(s[i]=='4') { a[2]+=2;a[3]++; } else if(s[i]=='5') { a[5]++; } else if(s[i]=='6') { a[3]++;a[5]++; } else if(s[i]=='7') { a[7]++; } else if(s[i]=='8') { a[7]++;a[2]+=3; } else if(s[i]=='9') { a[7]++;a[2]++;a[3]+=2; } } for(int i=7;i>=2;i--) { for(int j=0;j<a[i];j++) cout<<i; } cout<<endl; } return 0; }
    Processed: 0.013, SQL: 9