bnuoj 4225 杨辉三角形(规律)

http://www.bnuoj.com/bnuoj/problem_show.php?pid=4225

【题意】:

给定任意杨辉三角的行数n,请输出杨辉三角中n中总共有多少偶数。

【题解】:

  找规律:1为奇数 0为偶数  打出表

1
11
101
1111
10001
110011
1010101
11111111
100000001
1100000011
10100000101
111100001111
1000100010001
11001100110011
101010101010101
1111111111111111

该发现什么了吧!!!

【code】:

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string.h>
 4 #include <algorithm>
 5 
 6 using namespace std;
 7 #define N 3000000
 8 #define MOD 10000000
 9 
10 int  sum[N+10];
11 
12 int main()
13 {
14     sum[0]=1;
15     sum[1]=2;
16     sum[2]=2;
17     sum[3]=4;
18     int i,j,cnt=4;
19     for(i=4;i<=N;)
20     {
21         for(j=0;j<cnt&&i<=N;j++,i++)
22         {
23             sum[i]=2*sum[j];  //求第i行奇数的个数
24         }
25         cnt*=2;
26     }
27     for(i=0;i<=N;i++)
28     {
29         sum[i]=i+1-sum[i];  //第i行偶数的个数
30     }
31     for(i=1;i<=N;i++)
32     {
33         sum[i]=(sum[i]+sum[i-1])%MOD;  //前i行偶数的个数
34     }
35     //for(i=0;i<100;i++)cout<<sum[i]<<endl;
36     int n;
37     while(cin>>n)
38     {
39         cout<<sum[n]<<endl;
40     }
41     return 0;
42 }

 

posted @ 2013-09-26 14:56  crazy_apple  阅读(851)  评论(0编辑  收藏  举报