• Codeforces Round #324 (Div. 2)


    CF的rating设置改了。。人太多了,决定开小号打,果然是明智的选择!

    水 A - Olesya and Rodion

    #include <bits/stdc++.h>
    using namespace std;
    
    typedef long long ll;
    const int N = 1e5 + 10;
    const int INF = 0x3f3f3f3f;
    
    int main(void)	{
        int n, t;	scanf ("%d%d", &n, &t);
        if (t == 10)	{
    		if (n == 1)	{
    			puts ("-1");
    		}
    		else	{
    			for (int i=1; i<n; ++i)	printf ("1");
    			puts ("0");
    		}
        }
        else	{
    		for (int i=1; i<=n; ++i)	{
    			printf ("%d", t);
    		}
    		puts ("");
        }
    
    	return 0;
    }
    

    组合数学 B - Kolya and Tanya

    题意:有一个3n的圈,每个数字可以在[1, 3]中选择,问ai + ai+n + ai+2n != 6的方案数

    分析:3n个点,每个点都有3种选择,而出现ai + ai+n + ai+2n != 6的组合有7种,i的位置有n种,所以答案就是:(3 ^ (3 * n) - 7 ^ (n) + MOD) % MOD

    还好猜猜样例一次过掉,否则一旦卡住就不会出后面的两题了

    #include <bits/stdc++.h>
    using namespace std;
    
    typedef long long ll;
    const int N = 1e5 + 10;
    const int INF = 0x3f3f3f3f;
    const int MOD = 1e9 + 7;
    
    int pow_mod(int x, int n, int p)	{
    	int ret = 1;
    	while (n)	{
    		if (n & 1)	{
    			ret = 1ll * ret * x % p;
    		}
    		x = 1ll * x * x % p;
    		n >>= 1;
    	}
    	return ret;
    }
    
    int main(void)	{
    	int n;	scanf ("%d", &n);
    	if (n == 1)	{
    		printf ("20
    ");
    	}
    	else
    		printf ("%d
    ", (pow_mod (3, n * 3, MOD) - pow_mod (7, n, MOD) + MOD) % MOD);
    
    	return 0;
    }
    

      

    构造 C - Marina and Vasya

    题意:问是否有一个字符串和字符串a的不同个数与和字符串b的不同个数相同

    分析:将a和b的字符比较,得到它们相同的个数以及不同的个数,不同的那块可以选择与它们都不同的或者与其中一个相同的,可以自由分配,相同的那块只能相同或都不同

    #include <bits/stdc++.h>
    using namespace std;
    
    typedef long long ll;
    const int N = 1e5 + 10;
    const int INF = 0x3f3f3f3f;
    char s[N], t[N];
    
    char f(char a, char b)	{
    	if (a > b)	swap (a, b);
    	char r = a + 1;
    	if (r == b)	r++;
    	if (r > 'z')	r = 'a';
    	return r;
    }
    
    int main(void)	{
    	int n, m;	scanf ("%d%d", &n, &m);
    	scanf ("%s%s", s, t);
    	int dif = 0;
    	for (int i=0; i<n; ++i)	{
    		if (s[i] != t[i])	dif++;
    	}
    	int low = dif / 2;
    	if (dif & 1)	low++;
    	if (low > m)	puts ("-1");
    	else	{
    		if (m >= dif)	{
    			int sam = m - dif;
    			for (int i=0; i<n; ++i)	{
    				if (s[i] == t[i])	{
    					printf ("%c", sam > 0 ? f (s[i], t[i]) : s[i]);
    					sam--;
    				}
    				else	{
    					printf ("%c", f (s[i], t[i]));
    				}
    			}
    			puts ("");
    		}
    		else	{
    			int sam = (dif - m) * 2;
    			for (int i=0; i<n; ++i)	{
    				if (s[i] == t[i])	{
    					printf ("%c", s[i]);
    				}
    				else	{
    					if (sam <= 0)	printf ("%c", f (s[i], t[i]));
    					else
    						printf ("%c", sam & 1 ? s[i] : t[i]);
    					sam--;
    				}
    			}
    			puts ("");
    		}
    	}
    
    	return 0;
    }
    

      

    素数 D - Dima and Lisa

    题意:略

    分析:一个或两个很好想,三个没什么好办法,用哥德巴赫猜想,只能暴力来~

    #include <bits/stdc++.h>
    using namespace std;
    
    typedef long long ll;
    const int N = 1e5 + 10;
    const int INF = 0x3f3f3f3f;
    
    /*
        素性测试,在小范围(1e5)内判素数个数以及单个数判素数有奇效,不适用于大范围判素数
    */
    bool is_prime(int x)    {
        if (x == 2 || x == 3)   return true;
        if (x % 6 != 1 && x % 6 != 5)   return false;
        for (int i=5; i*i<=x; i+=6) {
            if (x % i == 0 || x % (i + 2) == 0) return false;
        }
        return true;
    }
    
    
    int main(void)	{
    	int n;	scanf ("%d", &n);
    	if (is_prime (n))	{
    		printf ("1
    %d
    ", n);
    	}
    	else	{
            int x = n - 2;
            if (is_prime (x))	{
    			printf ("2
    %d %d
    ", 2, x);
            }
            else	{
    			int k = n - 1;
    			while (true)	{
    				if (is_prime (k))	break;
    				k--;
    			}
    			n -= k;	//n >= 9
    			int a = n / 2;
    			while (a < n)	{
    				if (is_prime (a) && is_prime (n - a))	{
    					printf ("3
    %d %d %d
    ", k, a, n - a);	return 0;
    				}
    				a++;
    			}
            }
    	}
    
    	return 0;
    }
    

      

    编译人生,运行世界!
  • 相关阅读:
    javaBean与Map&lt;String,Object&gt;互转
    Webservice 的设计和模式
    xml和java Bean的直接转换,Xmap
    java https安全传输
    String与InputStream相互转换
    WebService的事务处理
    教大家用HtmlUnit实现程序模拟页面表单提交
    基础概念总结(spring security、Quartz、JUnit测试)
    工商银行网银查询接口开发问题(HTTPS)
    tomcat 设置https访问
  • 原文地址:https://www.cnblogs.com/Running-Time/p/4861509.html
Copyright © 2020-2023  润新知