51nod 1240 莫比乌斯函数

来源:互联网 发布:淘宝屏蔽粉丝数 编辑:程序博客网 时间:2024/06/05 14:50

点这里

知道公式很好做的一道题

#include <iostream>#include <string.h>#include <stdio.h>#include <math.h>using namespace std;const int mod = 1e9 + 7;const int maxn = 1e6 + 5;int prime[maxn];int vis[maxn], cnt, p;typedef long long ll;void init(){cnt = 0;memset(vis, 0, sizeof(vis));for (int i = 2; i<maxn; i++){if (!vis[i]){prime[cnt++] = i;for (int j = i + i; j<maxn; j += i)vis[j] = 1;}}}int yz[maxn];int  syzfj(int  n){int x = n, tmp = 0, hh = 0;for (int i = 0; i<cnt&&prime[i] <= n; i++){if (n%prime[i] == 0){tmp++; hh = 0;while (x%prime[i] == 0){hh++;x /= prime[i];}//cout << hh<<" " <<prime[i] << endl;if (hh >= 2)return 0;}} if (x > 1)tmp++;if (tmp % 2 == 0)return 1;elsereturn -1;}int main(){int n, t;init();while (cin >> n){if (n >= 2)cout << syzfj(n) << endl;elsecout << "1" << endl;}return 0;}



原创粉丝点击