洛谷—— P1869 愚蠢的組合數
阿新 • • 發佈:2017-11-28
cli -c tps 重復 找規律 int bad open targe
https://www.luogu.org/problemnew/show/1869
題目描述
最近老師教了狗狗怎麽算組合數,狗狗又想到了一個問題。。。
狗狗定義C(N,K)表示從N個元素中不重復地選取K個元素的方案數。
狗狗想知道的是C(N,K)的奇偶性。
當然,這個整天都老是用豎式算123456789*987654321=?的人不會讓你那麽讓自己那麽輕松,它說:“N和K都可能相當大。”
但是狗狗也犯難了,所以它就找到了你,想請你幫他解決這個問題。
輸入輸出格式
輸入格式:
第1行:一個正整數t,表示數據的組數。
第2~2+t-1行:兩個非負整數N和K。(保證k<=n)
輸出格式:
每一組輸入,如果C(N,K)是奇數則輸出1,否則輸出0。
輸入輸出樣例
輸入樣例#1: 復制3 1 1 1 0 2 1輸出樣例#1: 復制
1 1 0
說明
數據範圍
對於30% 的數據,n<=10^2 t<=10^4
對於50% 的數據,n<=10^3 t<=10^5
對於100%的數據,n<=10^8 t<=10^5
打表找規律
1 #include <cstdio> 2 3 const int N(100); 4 int C[233][223];表5 6 int main() 7 { 8 freopen("out.txt","w",stdout); 9 for(int i=0; i<=N; ++i) 10 { 11 C[i][i]=C[i][0]=1; 12 for(int j=1; j<i; ++j) 13 C[i][j]=C[i-1][j-1]+C[i-1][j]; 14 } 15 for(int i=0; i<=100; ++i) 16 { 17 for(int j=0; j<=i; ++j)18 { 19 //if(i&j) printf("%d %d--",i,j); 20 if((i&j)==j) printf("%d %d 1\n",i,j); 21 if(C[i][j]&1) printf("%d %d\n",i,j); 22 } 23 // printf("%d--%d : %d \n",i,j,C[i][j]&1); 24 puts(""); 25 } 26 return 0; 27 }
1 #include <cstdio> 2 3 inline void read(int &x) 4 { 5 x=0; register char ch=getchar(); 6 for(; ch>‘9‘||ch<‘0‘; ) ch=getchar(); 7 for(; ch>=‘0‘&&ch<=‘9‘; ch=getchar()) x=x*10+ch-‘0‘; 8 } 9 10 int Presist() 11 { 12 int t; read(t); 13 for(int n,m; t--; ) 14 read(n),read(m), 15 printf("%d\n",((n&m)==m)); 16 return 0; 17 } 18 19 int Aptal=Presist(); 20 int main(int argc,char**argv){;}
洛谷—— P1869 愚蠢的組合數