标签:style blog http color os io 数据 for
一些比较水的博弈论...(为什么都没有用到那什么SG呢....)
TYVJ 1140 飘飘乎居士拯救MM
题解:
歌德巴赫猜想
1 #include <cmath>
2 #include <cstdio>
3
4 int n, a, b, ta, tb;
5
6 inline bool isPrime(int x){
7 if (x==1) return true;
8 for (int i=2; i<=sqrt(x); i++)
9 if (!(x%i)) return false;
10 return true;
11 }
12
13 inline int getTime(int x){
14 if (isPrime(x)) return 1;
15 if (isPrime(x-1)) return 2;
16 if (x&1 && isPrime(x-2)) return 2;
17 return x&1 ? 3 : 2;
18 }
19
20 inline bool work(){
21 scanf("%d %d", &a, &b);
22 ta = b>a ? 1 : 0;
23 ta += getTime(a), tb = getTime(b);
24 return ta<=tb;
25 }
26
27 int main(){
28 scanf("%d", &n);
29 while (n--)
30 if (work()) puts("YES");
31 else puts("NO");
32 }
TYVJ 1420 红豆子和绿豆子
题解:
看完题后发现判断绿豆的奇偶就行了
开始有个点WA了看了下数据遭吓到了...数据范围都不告诉简直坑
1 #include <cstdio>
2 #define isDig (48<=c&&c<=57)
3
4 char c;
5 bool cj;
6
7 int main(){
8 do
9 c = getchar();
10 while (isDig);
11
12 do
13 c = getchar();
14 while (!isDig);
15
16 do {
17 if (isDig) cj = (c-48)&1;
18 c = getchar();
19 } while (isDig);
20
21 puts(cj ? "Yes" : "No");
22 }
TYVJ 1567 吃糖果游戏
题解:
数学归纳法:借用题解里的话
设a=[2,3,7,8]
设b=[1,4,5,6,9,10]
如果两个数都可写为10i+a的形式,设吃掉了第一个数,留下的第二个数10i+a,这时你无论怎么分,分出来的两个数一定有一个属于10i+b的形式。
而我们发现每个b都能写成两个a的形式。
因此如果两个数都是10i+a的形式,经过一轮之后回到手里的还是10i+a,所以必败。
但如果两个数中有一个数不是10i+a,这时可以把另外一个吃掉,然后把这个数分成两个10i+a,这时对方必败。
1 #include <cstdio>
2 #include <cstring>
3 #define isDig (48<=c&&c<=57)
4 #define win (c-48==2||c-48==3||c-48==7||c-48==8)
5
6 char c;
7 bool cj, anna;
8
9 inline void work(){
10 do
11 c = getchar();
12 while (!isDig);
13
14 do {
15 if (isDig) cj = win;
16 c = getchar();
17 } while (isDig);
18
19
20 do
21 c = getchar();
22 while (!isDig);
23
24 do {
25 if (isDig) anna = win;
26 c = getchar();
27 } while (isDig);
28
29 puts(cj&&anna ? "Shadow" : "Matrix67");
30 }
31
32 int main(){
33 for (int i=0; i<10; i++)
34 work();
35 }
标签:style blog http color os io 数据 for
原文地址:http://www.cnblogs.com/cjhahaha/p/3914534.html