记录编号 |
292392 |
评测结果 |
AAAAAAAAAA |
题目名称 |
最小生成树 |
最终得分 |
100 |
用户昵称 |
哒哒哒哒哒! |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.148 s |
提交时间 |
2016-08-08 20:29:23 |
内存使用 |
1.07 MiB |
显示代码纯文本
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
using namespace std;
#define ll long long
ll read(){
ll x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=x*10+ch-48;
ch=getchar();
}
return x*f;
}
ll tot,a[100000],ans=1;
void factor(ll x){
ll tmp=(ll)((double)sqrt(x)+1);
tot=0;
for(ll i=2;i<=tmp;i++){
if(x%i==0){
a[++tot]=i;
while(x%i==0) x/=i;
}
}
if(x!=1) a[++tot]=x;
}
int main(){
freopen("msta.in","r",stdin);freopen("msta.out","w",stdout);
ll n=read();
for(ll i=2;i<=n;i++){
factor(i);
ll phi=i;
for(ll j=1;j<=tot;j++)
phi=phi/a[j]*(a[j]-1);
ans=(ans*phi)%100000007;
}
printf("%lld\n",ans);
fclose(stdin);fclose(stdout);
return 0;
}