VJ2020-06-30

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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值