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 }