Uva-11859 Division Game

版权声明:最后一年,加油~ https://blog.csdn.net/zzti_xiaowei/article/details/84872895

题解详见刘汝佳--训练指南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;
}

猜你喜欢

转载自blog.csdn.net/zzti_xiaowei/article/details/84872895