其他分享
首页 > 其他分享> > Codeforces Round #729 (Div. 2)

Codeforces Round #729 (Div. 2)

作者:互联网

A题:

大意就是说给你一个数字n,输入2*n个数,这些数里面能不能全部两两相加结果为奇数,这样就分为三种情况:1.奇+奇=偶,2.奇+偶=奇,3.偶+偶=偶.那样就必须全部都是1奇配1偶才行)所以统计奇的数量和偶的数量是不是相同就行了

AC代码;

#include<iostream>
using namespace std;
int main(){
	int t;
	cin>>t;
	while(t--){
	int n,f1=0,f2=0;
	cin>>n;	
	for(int i=0;i<2*n;i++){
		int x;
		cin>>x;
		if(x&1)f1++;
		else f2++;
	}
	if(f1==f2){
		cout<<"Yes"<<endl;
	}
	else cout<<"No"<<endl;
	}
	return 0;
}

B题:

大意就是1能*a或者+b得到c1,c2,c1。c2都可以进行*a或者+b的操作,易得公式为a^x+yb,注意要特判.

AC代码:

#include<iostream>
using namespace std;
#define ll long long
int main(){
	ll t;
	cin>>t;
	while(t--){
		ll n,a,b;
		cin>>n>>a>>b;
		if(a==1){
			if((n-1)%b==0){
				cout<<"Yes"<<endl;
				continue;
			}
			else{
				cout<<"No"<<endl;
			}
		}
		else{
			ll ans=1,f=0;
			while(ans<=n){
				if((n-ans)%b==0){
					cout<<"Yes"<<endl;
					f=1;
					break;
				}	
				ans*=a;
			}
			if(!f)cout<<"No"<<endl;
		}
	}
	return 0;
} 

C题:

只能意会不能言传了,因为说起来挺麻烦的。就是从3开始一直扫描最小公倍数,3和2的公倍数6,6和4的公倍数12,12和5的公倍数60,60和6的公倍数60,60和7的公倍数420.....

#include<iostream>
using namespace std;
#define ll long long

const ll mod = 1e9 + 7;

ll gcd(ll a,ll b){
	return !b?a:gcd(b,a%b);
}

int main(){
	ll t;
	cin>>t;
	while(t--){
		ll n,a,b;
		cin>>n;
		ll ans= 2 * n % mod;
		ll k = 3,now = 2;
		while(now<=n){
			ans+=n/now;
			ans%=mod;
			now = now / gcd(now, k) * k;
			k++;
			//cout<<"now="<<now<<endl;
		}
		cout<<ans<<endl;
	}
	return 0;
}

标签:公倍数,ll,cin,long,Codeforces,60,int,Div,729
来源: https://blog.csdn.net/m0_51678367/article/details/118458405