zoukankan      html  css  js  c++  java
  • Codeforces Round #609 (Div. 2) A到C题

    签到,乘以两个相邻的合数

    #include<bits/stdc++.h>
    
    using namespace std;
    
    int main(int argc, char const *argv[])
    {
    	long long n;
    	cin>>n;
    	cout<<9*n<<" "<<8*n<<endl;
    	return 0;
    }
    



    链接

    这里的加数取模相当于移位,把两个序列排序后,遍历移位对应情况就可以。

        #include <bits/stdc++.h>
        using namespace std;
        typedef long long ll;
    
        ll A[20010];
        ll B[40010];
        int main () {
        	ll n,m;
    
        	cin>>n>>m;
        	for(int i = 0; i < n; i++) {
        		cin>>A[i];
        	}
        	for(int i = 0; i < n; i++) {
        		cin>>B[i];
        	}
        	sort(A, A+n);
        	sort(B, B+n);
        	for(int i = 0; i < n; ++i){
        		B[i + n] = B[i]; 
        	}
        	ll ans = (ll)1<<63-1;
        	for(ll i = 0; i < n; ++i){
        		ll diff = (B[i]-A[0]+m)%m;
        		bool flag = 1;
        		for(int j = 0; j < n; ++j){
        			if((A[j]+diff)%m != B[i+j]) {
        				flag = 0;
        				break;
        			}
        		}
        		if(flag){
        			ans = min(ans, diff);
        		}
        	}
        	cout << ans << endl;
        }
    



    链接

    取前k个,后面的数,要么是前k个的重复出现,要么是从第k个往前,是如果是9则变零,找到第一个不是9的加一。重复输出就可以。

    #include<bits/stdc++.h>
    
    using namespace std;
    
    char a[200010];
    char b[200010];
    int main()
    {
    	int m,k;
    	cin>>m>>k;
    	//scanf("%s",a);
    	int flag = 1;
    	for (int i = 0; i < m; ++i)
    	{
    		cin>>a[i];
    	}
    	//memset(b, 0, sizeof(b));
    	for (int i = 0; i < m; ++i)
    	{
    		if (a[i%k]<a[i])
    		{
    			flag = 0;
    			break;
    		}
    		if(a[i%k]>a[i])
    		{
    			flag = 1;
    			break;
    		}
    	}
    	//用来记录重叠的部分
    	for (int i = 0; i < k; ++i)
    	{
    		b[i] = a[i];
    	}
    	if (flag)
    	{
    		cout<<m<<endl;
    		for (int i = 0; i < m; ++i)
    		{
    			cout<<b[i%k];
    		}
    		cout<<endl;
    	} 
    	else
    	{
    		//先增加, 从尾部开始;
    		for (int i = k-1; i >=0 ; --i)
    		{
    			if (b[i]!='9')
    			{
    				b[i] += 1;
    				//flag = 1;
    				break;
    			}
    			else
    			{
    				b[i]='0';
    			}
    		}
    		cout<<m<<endl;
    		for (int i = 0; i < m; ++i)
    		{
    			cout<<b[i%k];
    		}
    		cout<<endl;
    		
    			
    	}
    	return 0;
    }
    
  • 相关阅读:
    高级I/O之存储映射I/O
    高级I/O之readn和writen函数
    高级I/O之readv和writev函数
    高级I/O之异步I/O
    高级I/O之I/O多路转接——pool、select
    高级I/O之STREAMS
    高级I/O之记录锁
    高级I/O之非阻塞I/O
    用于守护进程的出错处理函数
    守护进程之客户进程-服务器进程模型
  • 原文地址:https://www.cnblogs.com/Crossea/p/12080932.html
Copyright © 2011-2022 走看看