ACdream
1000 A + B Problem
1 #include<stdio.h>
2 int main()
3 { int a,b;
4 while(~scanf("%d%d",&a,&b))
5 printf("%d\n",a+b);
6 return 0;
7 }
1001 整数交换
1 void SwapInt(int *a,int *b)
2 { int temp;
3 temp=*a;
4 *a=*b;
5 *b=temp;
6 }
1008 A Very Easy Triangle Counting Game
1 /*题意:在圆上取n个点,相邻两个点之间连线,(注意,n和1相邻),然后所有点对(i ,i+2)相连,问能形成的不同的三角形有多少个?
2
3 思路:画图找规律,发现n=3,cnt=1; n=4,cnt=8; n=5 cnt=35 (5*2+5*2+ 5+5+5); n=6 cnt= 32 (6*2+6*2+ 6+2);
4
5 n=7,cnt=35(7*2+7*2+7); n=8, cnt=40(8*2+8*2+8) 发现后面项演变成多边形了!
6
7 于是得到规律:n>6;cnt=5*n
8 */
9 #include <stdio.h>
10 int a[7]={0,0,0,1,8,35,32};
11 int main()
12 {
13 int T,n,ans;
14 scanf("%d",&T);
15 for(int i=1;i<=T;i++)
16 {
17 scanf("%d",&n);
18 ans=n>6?(5*n):a[n];
19 printf("Case #%d: %d\n",i,ans%20121111);
20 }
21 return 0;
22 }
1013 Count It!
1 #include<stdio.h>
2 #include<string.h>
3 int main()
4 {
5 int n, i;
6 while (scanf("%d", &n) != EOF){
7 char h[1001];
8 scanf("%s", h);
9 int l = strlen(h), num = 0;
10 for (i = 0; i < l; i++)
11 if (h[i] == 'L')
12 num++;
13 printf("%d %d\n", num + n - l, num);
14
15 }
16 return 0;
17 }
1020 The Game about KILL
解法1:
1 #include<stdio.h>
2 int main()
3 {
4 int n;
5 while(scanf("%d",&n)==1)
6 {
7 int add=1,st=1;
8 while(n>1)
9 {
10 add=add<<1;
11 if(n&1)
12 st+=add;
13 n=n>>1;
14 }
15 printf("%d\n",st);
16 }
17 return 0;
18 }
解法2:
1 /*
2 约瑟夫环,n太大,首先可以想到打表找看有没有规律
3
4 可以发现是有规律的
5
6 可以看到,只要是2的i次幂,那么存活的是1,后面的依次加2
7
8 例如4为1,5就是3,6->5,7->7,8->1,9->3,10->5,11->7
9 */
10 #include <stdio.h>
11 #include <string.h>
12 #include <algorithm>
13 using namespace std;
14 #define ll long long
15 ll f[50],n;
16
17 int main()
18 {
19 int i;
20 f[0] = 1;
21 for(i = 1; i<31; i++)
22 f[i] = f[i-1]*2;
23 while(~scanf("%lld",&n))
24 {
25 for(i = 1; i<31; i++)
26 {
27 if(n<f[i])
28 break;
29 }
30 printf("%lld\n",1+2*(n-f[i-1]));
31 }
32
33 return 0;
34 }