记录编号 253026 评测结果 AAAAAAAAAA
题目名称 最小生成树 最终得分 100
用户昵称 GravatarFETS 1/3 是否通过 通过
代码语言 C++ 运行时间 0.006 s
提交时间 2016-04-21 15:29:17 内存使用 0.66 MiB
显示代码纯文本
  1. #include<cstring>
  2. #include<iostream>
  3. #include<cstdio>
  4. #include<ctime>
  5. using namespace std;
  6. #define N 30000
  7. int vis[N];
  8. int p[N],cnt,phi[N];
  9. const int MOD=100000007;
  10. int Euler(int n)
  11. {
  12. phi[1]=1;
  13. for (int i=2;i<n;i++)
  14. {
  15. if (!vis[i])
  16. {
  17. p[cnt++]=i;
  18. phi[i]=i-1;
  19. }
  20. for(int j=0;j<cnt&&i*p[j]<n;++j)
  21. {
  22. vis[i*p[j]]=1;
  23. if (i%p[j])
  24. phi[i*p[j]]=phi[i]*phi[p[j]];
  25. else
  26. {
  27. phi[i*p[j]]=phi[i]*p[j];
  28. break;
  29. }
  30. }
  31. }
  32. return cnt;
  33. }
  34. int main()
  35. {
  36. freopen("msta.in","r",stdin);
  37. freopen("msta.out","w",stdout);
  38. int n;
  39. scanf("%d",&n);
  40. Euler(N);
  41. long long ans=1;
  42. for(int i=1;i<=n;i++)
  43. {
  44. ans=1LL*ans*phi[i]%MOD;
  45. }
  46. printf("%d",ans);
  47. return 0;
  48. }