• CF1542A~C


    传送门

    A.Odd Set

    思路:

    判断奇偶个数是否相等。

    代码:

    int a[maxn];
     
    void solve(){
    	int n=read,cnt0=0,cnt1=0;
    	rep(i,1,2*n){
    		a[i]=read;
    		if(a[i]&1) cnt1++;
    		else cnt0++;
    	}
    	if(cnt0==cnt1) puts("Yes");
    	else puts("No");
    }
     
    int main(){
    	int _=read;
    	while(_--){
    		solve();
    	}
    	return 0;
    }
     
    

    B.Plus and Multiply

    思路:

    首先,当(n)(a^{x}+y*b)的形式时才在集合里。
    只需要枚举(x),判断余数能否整除(b)即可。
    注意:
    (1.)特判(a==1)的情况
    (2.)当余数为(0)时退出,输出No
    (3.)先判断余数是否为(0)再判断能否整除(b)

    代码:

    ll t[maxn],idx;
     
    void solve(){
    	ll n=read,a=read,b=read;
    	if(a==1){
    		if((n-1)%b==0) puts("Yes");
    		else puts("No");
    		return ;
    	}
    	idx=0;
    	for(int i=0;;i++){
    		if(i==0){
    			t[i]=1;
    			ll tmp=n-t[i];
    			if(t[i]>n) break;
    			//cout<<t[i-1]<<"***"<<tmp<<endl;
    			if(tmp%b==0){
    				puts("Yes");return ;
    			}
    			
    		}
    		else{
    			t[i]=t[i-1]*a;
    			ll tmp=n-t[i];
    			if(t[i]>n) break;
    			//cout<<t[i-1]<<"***"<<tmp<<endl;
    			if(tmp%b==0){
    				puts("Yes");return ;
    			}
    			
    		}
    		
    	}
    	puts("No");
    }
     
    int main(){
    	int _=read;
    	while(_--){
    		solve();
    	}
    	return 0;
    }
     
    

    Strange Function

    思路:

    首先,(f(奇数)=2,f(偶数)>=2)
    其次,(f(x)<=41),因为如果(f(x)=y),那么(lcm(1,2,3,……,y-1))一定是(x)的因子,而(lcm(1,2,3,……,y))一定不是(x)的因子,(lcm(1,2,3,……,41)>max(n)).
    然后,考虑每个数对答案的贡献,也就是说(f(x)=y)的数有几个。
    由于对于(f(x)>=2),假设答案最开始为(2*n);
    再从(3)开始考虑每个数(y)对答案的贡献,(f(x)>=y)的个数为(n/lcm(1,2,3……y-1)),每次的贡献是(1)。因为每个都会被小于他的加一遍。

    代码:

     
    ll n,a[50];
     
    ll gcd(ll a,ll b){
    	return b==0?a:gcd(b,a%b);
    }
     
    ll lcm(ll a,ll b){
    	return a/gcd(a,b)*b;
    }
     
    void init(){
    	a[1]=1;
    	for(int i=2;i<=42;i++)
    		a[i]=lcm(i,a[i-1]);
    }
     
    void solve(){
    	ll n=read;
    	ll res=2*n%mod;
    	rep(i,3,41){
    		res=(res+n/a[i-1])%mod;
    	}
    	cout<<res<<endl;
    }
     
    int main(){
    	init();
    	int _=read;
    	while(_--){
    		solve();
    	}
    	return 0;
    }
     
    
  • 相关阅读:
    java多态课后作业
    java继承与接口课后作业
    java数组课后作业
    javaString课后作业
    Java类与对象课后作业
    java方法课后作业
    java基本知识课后作业
    读《大道至简》第二章有感
    课堂作业(字符串转化并计算)
    读《大道至简》第一章有感
  • 原文地址:https://www.cnblogs.com/OvOq/p/15021766.html
Copyright © 2020-2023  润新知