Uva-11859 Division Game
阿新 • • 發佈:2018-12-07
題解詳見劉汝佳--訓練指南P136
寫的超級詳細了,在此貼個預處理程式碼。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int Max_n=1e4+10; int T,n,m; int cnt[Max_n]; void solve(){ //打表出2~Max_n的素因子個數(埃氏篩法改) memset(cnt,0,sizeof(cnt)); for(int i=2;i<Max_n;i++){ int t=i; if(!cnt[i]){ while(t<Max_n){ //當i為素數時才進行篩選,用t控制(當i==2時,4被篩一次,12被篩兩次,8要被篩三次) for(int j=t;j<Max_n;j+=t) cnt[j]++; t*=i; } } } } int main() { solve(); scanf("%d",&T); for(int t=1;t<=T;t++){ scanf("%d%d",&n,&m); int tag=0; for(int i=1;i<=n;i++){ int t,k=0; for(int j=1;j<=m;j++){ scanf("%d",&t); k+=cnt[t]; } tag^=k; } printf("Case #%d: %s\n",t,tag?"YES":"NO"); } return 0; }