当前位置:   article > 正文

2017 GPLT-大区赛-L1部分题解_gplt 题解

gplt 题解

L1-1. 出生年

因为要涉及到各个位数之间的比较,所以就直接用了一个字符串来存各个位数,还有就是要注意当数字正好是n个时才符合题目要求;

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. int main()
  5. {
  6. int i,j,n,m,k=0,t;
  7. char g[5],s[30];
  8. int v[100];
  9. scanf("%s %d",&g,&m);
  10. n=strlen(g);
  11. if(n!=4)//这里是当位数不足四位是将前面补零,方便后面运算
  12. {
  13. for(i=0;i<4-n;i++)
  14. {
  15. s[i]='0';
  16. }
  17. s[i]='\0';
  18. strcat(s,g);
  19. }
  20. else
  21. {
  22. strcpy(s,g);
  23. }
  24. //printf("%s\n",s);
  25. while(1)
  26. {
  27. memset(v,0,sizeof(v));
  28. j=0;
  29. for(i=0;i<4;i++)
  30. {
  31. if(!v[s[i]]) j++;
  32. v[s[i]]=1;
  33. }
  34. if(j==m) break;
  35. k++;
  36. s[3]++;
  37. for(i=3;i>=0;i--)
  38. {
  39. if(s[i]>'9')
  40. {
  41. s[i]-=10;
  42. s[i-1]+=1;
  43. }
  44. }
  45. }
  46. printf("%d %s",k,s);
  47. return 0;
  48. }

L1-3. 情人节

= =水题,但正好最近刚学了STL,就用vector写了一发

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<cstdlib>
  4. #include<vector>
  5. #include<iostream>
  6. using namespace std;
  7. int main()
  8. {
  9. vector<string>v;
  10. int i,j=0,n,m;
  11. string g;
  12. while(cin>>g)
  13. {
  14. if(g[0]=='.') break;
  15. v.push_back(g);
  16. }
  17. if(v.size()<2)
  18. printf("Momo... No one is for you ...\n");
  19. else if(v.size()>=2&&v.size()<14)
  20. cout<<v[1]<<" is the only one for you...";
  21. else
  22. cout<<v[1]<<" and "<<v[13]<<" are inviting you to dinner...";
  23. return 0;
  24. }

L1-7. 古风排版

算是一个要考量思维的题了,我们可以先将这个字符串存到一个n*x的二维数组中,以原题中的This is a test case为例,它对应的二维数组就是(为了方便观察就用了*代替空格了)

This

*is* 

a*te

st*c

ase

然后就可以发现,这题就变成了一个矩形转置问题了;

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. using namespace std;
  5. int main()
  6. {
  7. int i,j,n,m;
  8. char g[200][1010],s[1010];
  9. scanf("%d",&n);
  10. getchar();
  11. gets(s);
  12. for(i=0;i<=110;i++)
  13. {
  14. for(j=0;j<=1005;j++)//以为要涉及补全矩形,就全重置为空格
  15. g[i][j]=' ';
  16. }
  17. int x=0,y=0;
  18. for(i=0;s[i];i++)
  19. {
  20. g[y][x++]=s[i];
  21. if(x%n==0)
  22. {
  23. y++;x=0;
  24. }
  25. }
  26. /*for(i=0;i<5;i++)
  27. {
  28. for(j=0;j<4;j++)
  29. {
  30. printf("%c",g[i][j]);
  31. }
  32. printf("\n");
  33. }*/
  34. if(x==0) y--;
  35. for(j=0;j<n;j++)
  36. {
  37. for(i=y;i>=0;i--)
  38. {
  39. printf("%c",g[i][j]);
  40. }
  41. printf("\n");
  42. }
  43. }


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

闽ICP备14008679号