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;
}