比赛 noip 评测结果 EEEEEEEEEEEEEEEEEEEE
题目名称 __完全平方数 最终得分 0
用户昵称 BillAlen 运行时间 1.584 s
代码语言 C++ 内存使用 0.26 MiB
提交时间 2016-11-04 19:42:34
显示代码纯文本
#include <iostream>
#include <fstream>
#include <cstdio>
#include <cmath>
#define MOD 100000007
using namespace std;
int main(){
    fstream in("xnumber.in", ios::in), out("xnumber.out", ios::out);
    cin.rdbuf(in.rdbuf());
    cout.rdbuf(out.rdbuf());
    int n,x,l;
    long long ans;
    int p[5000005],a[350000],b[350000];
    ans = 1;
    cin >> n;
    x = int(sqrt(n));
    for(int i = 2; i <= x; ++i)
        if(p[i] == 0)
            for(int j = 2; j <= n / i; ++j) p[i * j] = 1;
    for(int i = 2; i <= n; ++i)
        if(p[i] == 0)
            a[++l] = i;
    for(int i = 1; i <= l; ++i){
        x = n;
        while(x / a[i] > 0){
            x = x / a[i];
            b[i] = b[i] + x;
        }
    }
    for(int i = 1; i <= l; ++i){
        if(b[i] % 2 == 1) b[i]--;
        for(int j = 1; j <= b[i]; ++j) ans = (ans * a[i]) % MOD;
    }
    cout << ans << endl;
    return 0;
}