当前位置:   article > 正文

九度oj 专题整理 (模拟部分1)_8ooiioo(9oj9j

8ooiioo(9oj9j

分类参考链接    点击打开链接

假期陆续刷了很多水题,觉得ACM只要能理解思路的代码都是水题,套路也是有的,不过我的水平也就停留在水题上了,随着面试日期的临近,反而今天有些不静心,就不如现在整理一下自己做过的水题吧,也免得眼高手低,现在看看自己当时写的代码,很多思路也让现在的自己吃惊。因为自己总是喜欢倒序做事,那就从每个专题的题目倒序来吧

模拟类型:1000 1001 1020 1031 1036 1038 1013 1014 1045 1046 1048 1050 1059 1060 1062 1063 1064 1065 1067 1068 1070 1075  1177 1179 1183 1186

题目:1186(简单来说,就是判断闰年)因为之前做过类似的题目,这个就不再写一遍了

题目 1 Maya Calendar 点击打开链接

题目2 打印月历 点击打开链接

1.Maya Calendar,这个题目如果先加上1,再去对月份和星期取余,换过各种方式,样例过了,却总WA,现在还不懂为什么,所以参照网上的,改成先取余后加了,

  1. #include<iostream>
  2. #include<algorithm>
  3. #include<stdio.h>
  4. #include<string.h>
  5. #include<math.h>
  6. #include<queue>
  7. #include<set>
  8. #include<map>
  9. #define LL long long
  10. #define PI acos(-1)
  11. #define exp 1e-9
  12. using namespace std;
  13. priority_queue <int, vector<int>, greater<int> > Q;
  14. char Haab[20][20]={"pop", "no", "zip", "zotz", "tzec", "xul", "yoxkin", "mol", "chen", "yax", "zac", "ceh", "mac", "kankin", "muan","pax", "koyab", "cumhu", "uayet"};
  15. char holly[20][20]={"imix", "ik", "akbal", "kan", "chicchan", "cimi", "manik", "lamat", "muluk", "ok", "chuen", "eb", "ben", "ix", "mem", "cib", "caban", "eznab", "canac", "ahau"};
  16. int main()
  17. {
  18. //printf("%s",Haab[1]);
  19. int n;
  20. scanf("%d",&n);
  21. //printf("%d\n",n);
  22. int day,year;
  23. char month[10];
  24. int sum[10000];
  25. memset(sum,0,sizeof(sum));
  26. for(int j=0; j<n; j++)
  27. {
  28. scanf("%d.%s %d",&day,month,&year);
  29. sum[j]+=year*365;
  30. for(int i=0; i<19; i++)
  31. {
  32. if(strcmp(Haab[i],month)==0)
  33. {
  34. sum[j]+=i*20;
  35. break;
  36. }
  37. }
  38. sum[j]+=day;
  39. //printf("%d.%s %d",day,month,year);
  40. }
  41. printf("%d\n",n);
  42. //printf("%.8lf\n",16/10);
  43. for(int k=0; k<n; k++)
  44. {
  45. int y=sum[k]/260;
  46. //printf("%d\n",sum[k]);
  47. int m=sum[k]%20;
  48. int d=sum[k]%13+1;
  49. printf("%d %s %d\n",d,holly[m],y);
  50. }
  51. return 0;
  52. }

2.打印月历

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <cstring>
  5. #define exp 1e-6
  6. #define pi acos(-1.0)
  7. using namespace std;
  8. int m1[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
  9. int m2[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
  10. bool judge(int year)
  11. {
  12. if(year%100==0)
  13. {
  14. if(year%400==0)
  15. {
  16. return true;
  17. }
  18. }
  19. else
  20. {
  21. if(year%4==0)
  22. {
  23. return true;
  24. }
  25. }
  26. return false;
  27. }
  28. int daynum(int year)
  29. {
  30. int day=0;
  31. for(int i=1900; i<year; i++)
  32. {
  33. if(judge(i))
  34. {
  35. day+=366;
  36. }
  37. else
  38. {
  39. day+=365;
  40. }
  41. }
  42. return day;
  43. }
  44. int monthday(int year,int month)
  45. {
  46. int mday=0;
  47. if(judge(year))
  48. {
  49. for(int i=0; i<month; i++)
  50. {
  51. mday+=m2[i];
  52. }
  53. }
  54. else
  55. {
  56. for(int i=0; i<month; i++)
  57. {
  58. mday+=m1[i];
  59. }
  60. }
  61. return mday;
  62. }
  63. int main()
  64. {
  65. int year,month;
  66. while(~scanf("%d %d",&year,&month))
  67. {
  68. int day=daynum(year);
  69. day+=monthday(year,month);
  70. printf("Sun Mon Tue Wed Thu Fri Sat\n");
  71. int flag=0;
  72. int mod=day%7+1;
  73. for(int k=0; k<mod; k++)
  74. {
  75. printf(" ");
  76. flag++;
  77. }
  78. if(judge(year))
  79. {
  80. for(int i=1; i<m2[month];i++)
  81. {
  82. printf("%3d ",i);
  83. flag++;
  84. if(flag%7==0)
  85. printf("\n");
  86. }
  87. printf("%3d\n",m2[month]);
  88. }
  89. else
  90. {
  91. for(int i=1; i<m1[month];i++)
  92. {
  93. printf("%3d ",i);
  94. flag++;
  95. if(flag%7==0)
  96. printf("\n");
  97. }
  98. printf("%3d\n",m1[month]);
  99. }
  100. // printf("%d\n",day%7);
  101. }
  102. return 0;
  103. }

题目1183:守形数

现在看上去的想法还可以,大概是钻了数很小的空子,不然别的思路呢?

  1. #include<iostream>
  2. #include<algorithm>
  3. #include<stdio.h>
  4. #include<string.h>
  5. #include<math.h>
  6. #include<queue>
  7. #include<set>
  8. #include<map>
  9. #define LL long long
  10. #define PI acos(-1)
  11. #define exp 1e-9
  12. using namespace std;
  13. priority_queue <int, vector<int>, greater<int> > Q;
  14. int main()
  15. {
  16. int n,m,ans;
  17. while(~scanf("%d",&n))
  18. {
  19. m=n*n;
  20. if(n<10)
  21. ans=m%10;
  22. else if(n<100)
  23. ans=m%100;
  24. else
  25. ans=m%1000;
  26. if(ans==n)
  27. printf("Yes!\n");
  28. else
  29. printf("No!\n");
  30. }
  31. return 0;
  32. }

题目1179:阶乘,

题目很简单,可能对于初学者来说,就是要注意阶乘数据类型要用long long 吧,还做过一个题目要用double,发现自己之前wa过两次,原来将n%2判断奇数偶数写成了n%1 = =

  1. #include<iostream>
  2. #include<algorithm>
  3. #include<stdio.h>
  4. #include<string.h>
  5. #include<math.h>
  6. #include<queue>
  7. #include<set>
  8. #include<map>
  9. #define LL long long
  10. #define PI acos(-1)
  11. #define exp 1e-9
  12. #define INF 0x7fffffff
  13. using namespace std;
  14. priority_queue <int, vector<int>, greater<int> > Q;
  15. long long list[1010];
  16. int n;
  17. int fun()
  18. {
  19. list[0]=1;
  20. for(int i=1; i<=n; i++)
  21. {
  22. list[i]=list[i-1]*i;
  23. //printf("%d\n",list[i]);
  24. }
  25. }
  26. int main()
  27. {
  28. while(~scanf("%d",&n))
  29. {
  30. fun();
  31. LL ans=0,cnt=0;
  32. if(n%2)
  33. {
  34. for(int i=1; i<=n; i+=2)
  35. {
  36. ans+=list[i];
  37. }
  38. for(int i=2; i<=n-1; i+=2)
  39. {
  40. cnt+=list[i];
  41. }
  42. }
  43. else
  44. {
  45. for(int i=1; i<=n-1; i+=2)
  46. {
  47. ans+=list[i];
  48. }
  49. for(int i=2; i<=n; i+=2)
  50. {
  51. cnt+=list[i];
  52. }
  53. }
  54. printf("%lld %lld\n",ans,cnt);
  55. }
  56. return 0;
  57. }

太长了,三个题为单位续写吧,,

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/928878
推荐阅读
相关标签
  

闽ICP备14008679号