Welcome, Guest! Sign Up RSS

Clever Space

Friday, 11.22.2024
Main » 2013 » October » 14 » [NOIP2012模拟赛No.22]完全平方数
11:21 AM
[NOIP2012模拟赛No.22]完全平方数

这道题的关键是快速分解质因数

可以预处理出每个数最小的因子
然后依次除以它

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<set>
#include<algorithm>
#include<map>
#include<vector>
#include<queue>
#include<iostream>
#include<string>
#include<cmath>
#define N 1000100
#define FOR(i,a,b) for(i=(a);i<=(b);i++)
#define ROF(i,a,b) for(i=(a);i>=(b);i--)
typedef long long LL;
using namespace std;
int cnt=0,c[N];
bool f[N];
void init()
{
  int i,j;
  FOR(i,2,N)
   FOR(j,1,N/i) 
    if (!c[i*j]) c[i*j]=i;
}
void resolve(int x)
{
  while (x>1)
  {
    f[c[x]]=!f[c[x]];
    if (f[c[x]]) cnt++;
    else cnt--;
    x/=c[x];
  }
}
int main()
{
  init();
  int n,i,X;
  scanf("%d",&n);  
  FOR(i,1,n)
  {
    scanf("%d",&X);
    resolve(X);
    if (cnt==0) printf("DA\n");
    else printf("NE\n");
  }
}

Views: 510 | Added by: dhy0077 | Rating: 5.0/1
Total comments: 0
Only registered users can add comments.
[ Sign Up | Login ]