记录编号 252985 评测结果 AAAAAAAAAA
题目名称 最小生成树 最终得分 100
用户昵称 GravatarFoolMike 是否通过 通过
代码语言 C++ 运行时间 0.021 s
提交时间 2016-04-21 13:24:08 内存使用 0.42 MiB
显示代码纯文本
  1. #include<cstdio>
  2. #include<iostream>
  3. //#include"debug.h"
  4. using namespace std;
  5.  
  6. const int maxl=20010;
  7. int n,phi[maxl],p[maxl],cnt,i,j,k,ji;
  8. long long ans=1;
  9.  
  10. int main()
  11. {
  12. freopen("msta.in","r",stdin);
  13. freopen("msta.out","w",stdout);
  14. scanf("%d",&n);
  15. phi[1]=1;
  16. for (i=2;i<=n;i++){
  17. for (j=1;j<=cnt;j++)
  18. if (i%p[j]==0) break;
  19. if (j==cnt+1){
  20. p[++cnt]=i;
  21. phi[i]=i-1;
  22. }
  23. else{
  24. for (k=i,ji=1;k%p[j]==0;k/=p[j],ji*=p[j]);
  25. if (i!=ji) phi[i]=phi[ji]*phi[i/ji];
  26. else phi[i]=i-i/p[j];
  27. }
  28. ans=(ans*phi[i])%100000007;
  29. }
  30. //print(phi,1,n,' ');
  31. cout<<ans<<endl;
  32. return 0;
  33. }