记录编号 292392 评测结果 AAAAAAAAAA
题目名称 最小生成树 最终得分 100
用户昵称 Gravatar哒哒哒哒哒! 是否通过 通过
代码语言 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;
}