zoukankan      html  css  js  c++  java
  • Codeforces Round #629 (Div. 3)做题记录

    ------------恢复内容开始------------

    第一题A题:

    这就是个签到题,判断一下x%y是否为0,不为零,则给x+(y-x%y)的值就好了。

    #include<map>
    #include<stdlib.h>
    #include<iostream>
    #include<vector>
    #include<string>
    #include<algorithm>
    #include<cstring>
    #include<queue>
    #include<stack>
    #include<cmath>
    #include<cstdio>
    using namespace std;
    const int maxn = 1e6 + 10;
    #define ll long long
    const int inf = 0x3f3f3f3f;
    const int mod = 1e9 + 7;
    int main() {
    	int t;
    	cin >> t;
    	while (t--)
    	{
    		int x, y;
    		cin >> x >> y;
    		int m = x % y;
    		if (m == 0)cout << m << endl;
    		else
    		{
    			m = y - m;
    			cout << m << endl;
    		}
    	}
    }
    

      B题:

    给我们n个字母,其中n-2个a,和2个b,给我们一个顺序规律,让我们找出第k个的字符串,并输出;

    规律就是假设我们反向看,可以发现是有一层一层的,第一层只有1个,第二层有2个,比如我们假设总共5个字母,第一层就是aaabb,第二层就是aabab,aabba,所以我们可以吧k拆分成

    看他是第几层的,然后余数就是第几个了。

    #include<map>
    #include<stdlib.h>
    #include<iostream>
    #include<vector>
    #include<string>
    #include<algorithm>
    #include<cstring>
    #include<queue>
    #include<stack>
    #include<cmath>
    #include<cstdio>
    using namespace std;
    const int maxn = 1e6 + 10;
    #define ll long long
    const int inf = 0x3f3f3f3f;
    const int mod = 1e9 + 7;
    int main() {
    	int t;
    	cin >> t;
    	while (t--)
    	{
    		int x, y;
    		cin >> x >> y;
    		int sum = 0;
    		for (int i = 1;; i++)
    		{
    			if (y <= i)break;
    			y -= i;
    			sum = i;
    		}
    		sum++;
    		y--;
    		for (int i = 1; i <= x; i++)
    		{
    			if (i == x - sum || i == x - y)
    			{
    				cout << "b";
    			}
    			else
    			{
    				cout << "a";
    			}
    		}
    		cout << endl;
    	}
    }
    

      C题:

    给我们一个三进制的数字,让我们拆分成2个数,保证两个数中最大的数要最小;

    简单的说,我们就通过遍历,先把2拆成1,如果碰到第一个1开始我们就要开始操作了,首先我们先把第一个1分给第一个数字,然后接下来所有的数都分给第二个数,这样就可以保证题目的要求了;

    #include<map>
    #include<stdlib.h>
    #include<iostream>
    #include<vector>
    #include<string>
    #include<algorithm>
    #include<cstring>
    #include<queue>
    #include<stack>
    #include<cmath>
    #include<cstdio>
    using namespace std;
    const int maxn = 5e4 + 10;
    #define ll long long
    const int inf = 0x3f3f3f3f;
    const int mod = 1e9 + 7;
    char a[maxn];
    char x1[maxn], x2[maxn];
    int main() {
    	int t;
    	cin >> t;
    	while (t--)
    	{
    		int n;
    		cin >> n;
    		cin >> a;
    		int flag = 0;
    		for (int i = 0; i < n; i++)
    		{
    			if (a[i] == '2')
    			{
    				if (flag == 0)
    				{
    					x1[i] = '1';
    					x2[i] = '1';
    				}
    				else
    				{
    					x1[i] = '0';
    					x2[i] = '2';
    				}
    			}
    			else if (a[i] == '1')
    			{
    				if (flag == 0)
    				{
    					x1[i] = '1';
    					x2[i] = '0';
    					flag = 1;
    				}
    				else
    				{
    					x1[i] = '0';
    					x2[i] = '1';
    				}
    			}
    			else
    			{
    				x1[i] = '0';
    				x2[i] = '0';
    			}
    			
    		}
    		for (int i = 0; i < n; i++)
    		{
    			cout << x1[i];
    		}
    		cout << endl;
    		for (int i = 0; i < n; i++)
    		{
    			cout << x2[i];
    		}
    		cout << endl;
    	}
    }
    

      D题:

     以后再补

    ------------恢复内容结束------------

  • 相关阅读:
    汉诺塔
    破损的键盘
    解方程
    运输计划
    选学霸
    子集和的目标值
    棋盘染色2
    守卫者的挑战
    飞扬的小鸟
    攻克城堡
  • 原文地址:https://www.cnblogs.com/csxaxx/p/12769640.html
Copyright © 2011-2022 走看看