第七章 数学9 AcWing 1606. C 语言竞赛

你的名字 2024-03-31 11:15 171阅读 0赞

第七章 数学9 AcWing 1606. C 语言竞赛

原题链接

AcWing 1606. C 语言竞赛

算法标签

模拟 排序 数论 筛质数

思路

使用线性筛法筛质数(素数),依题意模拟

代码

  1. #pragma GCC optimize(2)
  2. #pragma GCC optimize(3)
  3. #include<bits/stdc++.h>
  4. #define int long long
  5. #define x first
  6. #define y second
  7. #define ump unordered_map
  8. #define ums unordered_set
  9. #define pq priority_queue
  10. #define rep(i, a, b) for(int i=a;i<b;++i)
  11. #define Rep(i, a, b) for(int i=a;i>=b;--i)
  12. using namespace std;
  13. typedef pair<int, int> PII;
  14. const int N=10005, INF=0x3f3f3f3f3f3f3f3f;
  15. const double Exp=1e-8;
  16. //int t, n, m, cnt, ans;
  17. int n, k, id;
  18. int st[N], rankk[N];
  19. inline int rd(){
  20. int s=0,w=1;
  21. char ch=getchar();
  22. while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
  23. while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
  24. return s*w;
  25. }
  26. void put(int x) {
  27. if(x<0) putchar('-'),x=-x;
  28. if(x>=10) put(x/10);
  29. putchar(x%10^48);
  30. }
  31. // st[排名为1]==0 st[排名为素数]==1 st[排名为其他]==2
  32. void is(){
  33. rep(i, 2, N){
  34. if(!st[i]){
  35. st[i]=1;
  36. for(int j=i*2; j<N; j+=i){
  37. st[j]=2;
  38. }
  39. }
  40. }
  41. }
  42. signed main(){
  43. ios::sync_with_stdio(false);
  44. cin.tie(0);
  45. cout.tie(0);
  46. is();
  47. n=rd();
  48. rep(i, 1, n+1){
  49. id=rd();
  50. rankk[id]=i;
  51. }
  52. k=rd();
  53. rep(i, 0, k){
  54. id=rd();
  55. printf("%04lld: ", id);
  56. if(!rankk[id]){
  57. puts("Are you kidding?");
  58. }else{
  59. int ii=st[rankk[id]];
  60. if(ii==-1){
  61. puts("Checked");
  62. }else {
  63. if(ii==0){
  64. puts("Mystery Award");
  65. }else if(ii==1){
  66. puts("Minion");
  67. }else{
  68. puts("Chocolate");
  69. }
  70. st[rankk[id]]=-1;
  71. }
  72. }
  73. }
  74. return 0;
  75. }

参考文献

AcWing 1606. C 语言竞赛(PAT甲级辅导课)y总视频讲解

原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,171人围观)

还没有评论,来说两句吧...

相关阅读

    相关 数学

    说明:本文翻译自《TangoRefMan\_Sep\_1\_2008》 由于本人是编程初学者,对很多程序设计概念不是非常熟悉,编程经验不多,再加上英语水平不高,翻译纯属一个D