• OVO——扶咕咕的20道CF


    OVO——扶咕咕的20道CF

    CF1352A Sum of Round Numbers

    题意描述

    一个正整数,如果它的形式像 d0000...00d0000...00 一样,那么就称它为“圆数”,换句话说,“圆数”除了最高位其它的数位都是 00 ,特别地,正整数1sim91∼9都是“圆数”

    举例来说,4000,1,9,800,904000,1,9,800,90都是“圆数”,而110,707,222,1001110,707,222,1001不是“圆数”

    给你一个正整数 nn , 找出若干个“圆数”,使“圆数”的数量尽可能少,且它们的和等于 nn

    解:直接模拟即可

    圆数=按位分离

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <string>
    #include <algorithm>
    #include <cmath>
    #include <queue>
    #define INF 525525
    #include <vector>
    using namespace std;
    
    int t,n,ans;
    bool sol(int n){
    	int ans=0;
    	while(n){
    		int n0=n,tep=10;
    		while(n0%10==0){
    			tep*=10;
    			n0/=10;
    		}
    		cout<<n%tep<<" ";
    		n-=n%tep;
    		ans++;
    	}cout<<endl;
    //	return ans;
    }
    
    int solans(int n){
    	int ans=0;
    	while(n){
    		int n0=n,tep=10;
    		while(n0%10==0){
    			tep*=10;
    			n0/=10;
    		}
    //		cout<<n%tep<<endl;
    		n/=tep;
    		ans++;
    	}
    	return ans;
    }
    
    int main()
    {
    	cin>>t;
    	while(t--){
    		cin>>n;
    		ans=solans(n);
    		cout<<ans<<endl;
    		sol(n);
    		
    	}
    	return 0;
    }
    

    CF1352B Same Parity Summands

    题意翻译

    T组数据,每组数据两个数n,k问你是不是可以把n分解为k个奇偶性相同的数的和。

    若可以,第一行输出YES,后面一行是你分解出来的k个数。

    否则,输出一行NO

    解:只分解为0,1,2,和最后的大数

    当n< k时一定不行

    n是奇数,k是偶数,不行

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <string>
    #include <algorithm>
    #include <cmath>
    #include <queue>
    #define INF 525525
    #include <vector>
    using namespace std;
    
    int main()
    {
    	int n,k,t;
    	cin>>t;
    	while(t--){
    			cin >> n >> k;
    		if(n < k){
    			cout<<"NO"<<endl;
    			continue;
    		}
    		if(n % 2 && k % 2){
    			cout<<"YES"<<endl;
    			for(int i=1;i<k;i++)	cout<<1<<" ";
    			cout<<n-k+1<<endl;
    			continue;
    		}
    		if(!(n % 2) && !(k % 2)){
    			if(n-2*(k-1) > 0){
    				cout<<"YES"<<endl;
    				for(int i=1;i<k;i++)	cout<<2<<" ";
    				cout <<n-2*(k-1)<<endl;
    				continue;
    			}
    			cout<<"YES"<<endl;
    			for(int i=1;i<k;i++)	cout<<1<<" ";
    			cout << n-(k-1) << endl;
    			continue;
    		}
    		if(n % 2 && !(k%2) ){
    			cout<<"NO"<<endl;
    			continue;
    		}
    		if(!(n%2) && k%2){
    			if(n-2*(k-1) <= 0){
    				cout<<"NO"<<endl;
    				continue;
    			}
    			cout<<"YES"<<endl;
    			for(int i=1;i<k;i++)	cout<<2<<" ";
    			cout << n-2*(k-1) << endl;
    			continue;
    		}
    	}
    	
    	return 0;
    }
    
    

    CF1352C K-th Not Divisible by n

    题目描述

    给定两个正整数 n 和 k。求出第k* 个不能被 n 整除的正整数。

    例如,如果 n=3,k*=7,那么所有不能被 3 整除的数为:1,2,4,5,7,8,10,11,13… 在这其中的第 7 个数字为 10。

    解:小学数学找规律

    ans=k/(n-1)*n+k%(n-1);

    如果k恰好整除n-1,那ans所表示的最后一个数是n的倍数,ans--

    #include <cmath>
    #include <string>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    using namespace std;
    
    int n,k,t,ans; 
    int main()
    {
    	cin>>t;
    	while(t--){
    		cin>>n>>k;
    		ans=k/(n-1)*n+k%(n-1);
    		if(k%(n-1)==0)	ans--;
    		cout<<ans<<endl;	
    	}
    	
    	return 0;
    }
    
  • 相关阅读:
    Net基础篇_学习笔记_第十二天_面向对象继承(命名空间 、值类型和引用类型)
    Net基础篇_学习笔记_第十一天_面向对象(练习)
    js判断客户端是pc还是移动端
    swoole_table
    Master Reactor Manager Worker TaskWorker(Task)
    阻塞,非阻塞,同步,异步
    进程,线程与协程
    swoole 安装与简单应用
    laravel 简单应用 redis
    ubuntu 设置固定IP
  • 原文地址:https://www.cnblogs.com/ZhengkunJia/p/13058925.html
Copyright © 2020-2023  润新知