L1-002 打印沙漏

细节:就是在  (i>j&&i+j<r+1) 这个区间里才有空格,然后就是 for 循环   for(r=1; ;r+=2)  条件不满足之后还会再+2;

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
  4. #define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
  5. #define pb push_back
  6. #define fi first
  7. #define se second
  8. typedef long long ll;
  9. typedef unsigned long long ull;
  10. typedef long double ldb;
  11. int main(){
  12. int n;
  13. char c;
  14. scanf("%d %c",&n,&c);
  15. // int r=1,sum=1;
  16. // for(r=3;sum<=n ;r+=2){
  17. // sum+=r*2;
  18. // }
  19. // sum-=r*2;
  20. // r-=2;
  21. int r=,sum=;
  22. for(r=; ;r+=){
  23. if(r==)sum+=r;
  24. else sum+=r<<;
  25. if(sum>n)break;
  26. }
  27. sum-=r<<;
  28. r-=;
  29. // cout<<sum<<" "<<r<<endl;
  30. for(int i=;i<=r;i++){
  31. for(int j=;j<=r;j++){
  32. if(i<=j&&i+j<=r+||i>=j&&i+j>=r+)cout<<c;
  33. else if(i>j&&i+j<r+) cout<<" ";
  34.  
  35. }
  36. cout<<endl;
  37. }
  38. cout<<n-sum<<endl;
  39. return ;
  40. }

L1-003

搞个map即可,然后注意map只能从first  映射到second

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
  4. #define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
  5. #define pb push_back
  6. #define fi first
  7. #define se second
  8. typedef long long ll;
  9. typedef unsigned long long ull;
  10. typedef long double ldb;
  11. int main(){
  12. string s;
  13. cin>>s;
  14. map<int,int>mp;
  15. int len=s.size();
  16. for(int i=;i<len;i++){
  17. mp[s[i]-'']++;
  18. }
  19. map<int,int>::iterator it;
  20. for(it=mp.begin();it!=mp.end();it++){
  21. cout<<it->fi<<":"<<it->se<<endl;
  22. }
  23. return ;
  24. }

L1-006 连续因子

解法:就是你把他的全部因子求出来,然后去枚举每一个因子的最大连续次数,最后取一个最大值即可;

然后如果n是素数,输出n即可;

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
  4. #define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
  5. #define pb push_back
  6. #define fi first
  7. #define se second
  8. typedef long long ll;
  9. typedef unsigned long long ull;
  10. typedef long double ldb;
  11. int main(){
  12. int n;
  13. cin>>n;
  14. vector<int>v;
  15. int ans,max=-;
  16. for(int i=;i<=sqrt(n)+;i++){
  17. if(n%i==)v.pb(i);
  18. }
  19. int len=v.size();
  20. for(int i=;i<len;i++){
  21. int sum=v[i],cnt=;
  22. for(int j=v[i]+; ;j++){
  23. sum*=j;
  24. if(n%sum!=)break;
  25. cnt++;
  26. }
  27. if(cnt>max){
  28. ans=v[i];
  29. max=cnt;
  30. }
  31. }
  32. if(len==)cout<<<<endl<<n<<endl;
  33. else {
  34. cout<<max+<<endl;
  35. for(int i=;i<=max;i++){
  36. if(i)cout<<"*";
  37. cout<<ans+i;
  38. }
  39. cout<<endl;
  40. }
  41. return ;
  42. }

L1-008 求整数段和

细节,最后不要打出两个换行即可;

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
  4. #define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
  5. #define pb push_back
  6. #define fi first
  7. #define se second
  8. typedef long long ll;
  9. typedef unsigned long long ull;
  10. typedef long double ldb;
  11. int main(){
  12.  
  13. int a,b;
  14. cin>>a>>b;
  15. ll sum=;
  16. int i,j;
  17. for(i=a,j=;i<=b;j++,i++){
  18. printf("%5d",i);
  19. sum+=i;
  20. if(j%==)printf("\n");
  21. }
  22. if((j-)%!=)printf("\n");
  23. printf("Sum = %d",sum);
  24. // cout<<"Sum = "<<sum<<endl;
  25. return ;
  26.  
  27. }

L1-009 N个数求和

细节:这里就是模拟通分,然后注意每一步都要约分,不然爆long long,然后这里我犯一些细节错误,就是

判断语句应该这样写: if(a/b!=0&&a%b!=0)

而不是这样:

if(a>=b&&a%b!=0)

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
  4. #define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
  5. #define pb push_back
  6. #define fi first
  7. #define se second
  8. typedef long long ll;
  9. typedef unsigned long long ull;
  10. ll gcd(ll a,ll b){return b==?a:gcd(b,a%b);}
  11. int main(){
  12. int n;
  13. scanf("%d",&n);
  14. ll g,a,b,c,d;
  15. scanf("%lld/%lld",&a,&b);
  16. g=gcd(a,b);
  17. a/=g;
  18. b/=g;
  19. for(int i=;i<n;i++){
  20. scanf("%lld/%lld",&c,&d);
  21. ll tmp=gcd(b,d);
  22. a=a*d/tmp+c*b/tmp;
  23. b=b/gcd(b,d)*d;
  24. g=gcd(a,b);
  25. a/=g;
  26. b/=g;
  27. }
  28. if(a>&&b<||a<&&b<)a=-a,b=-b;
  29.  
  30. if(a>=b&&a%b!=)printf("%lld %lld/%lld\n",a/b,a%b,b);
  31. else if(a/b!=&&a%b==)printf("%lld\n",a/b);
  32. else if(a/b==&&a!=)printf("%lld/%lld\n",a,b);
  33. else puts("");
  34.  
  35. return ;
  36. }

就是考虑负数的情况这样就不对了;

L1-020 帅到没朋友

注意是五位ID就行了,然后搞个set判重,vector保存结果;

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
  4. #define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
  5. #define pb push_back
  6. #define pf push_front
  7. #define fi first
  8. #define se second
  9. typedef long long ll;
  10. typedef unsigned long long ull;
  11. typedef long double ldb;
  12. typedef double db;
  13. const db PI=acos(-1.0);
  14. const ll INF=0x3f3f3f3f3f3f3f3fLL;
  15. const int inf=0x3f3f3f3f;//0x7fffffff;
  16. const double eps=1e-;
  17. const ll MOD=1e9+;
  18. const int maxn=1e6+;
  19. bool flag[maxn];
  20. int main(){
  21. int n,k,m,x;
  22. scanf("%d",&n);
  23. memset(flag,,sizeof flag);
  24. while(n--){
  25. scanf("%d",&k);
  26. rep(i,,k){
  27. scanf("%d",&x);
  28. if(k>)flag[x]=;
  29. }
  30. }
  31. set<int>st;
  32. scanf("%d",&m);
  33. vector<int>v;
  34. while(m--){
  35. scanf("%d",&x);
  36. if(!flag[x]&&st.find(x)==st.end())v.pb(x);
  37. if(!flag[x])st.insert(x);
  38. }
  39. if(st.empty())cout<<"No one is handsome";
  40. else {
  41. for(int i=;i<v.size();i++)
  42. printf("%.5d%c",v[i],i==v.size()-?'\n':' ');
  43. }
  44. return ;
  45. }

L1-025 正整数A+B

就是写个函数操作会很方便,要学会结构化程序设计;

然后注意读入的时候第二个要用getline读入

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
  4. #define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
  5. #define pb push_back
  6. #define pf push_front
  7. #define fi first
  8. #define se second
  9. typedef long long ll;
  10. typedef unsigned long long ull;
  11. typedef long double ldb;
  12. typedef double db;
  13. const db PI=acos(-1.0);
  14. const ll INF=0x3f3f3f3f3f3f3f3fLL;
  15. const int inf=0x3f3f3f3f;//0x7fffffff;
  16. const double eps=1e-;
  17. const ll MOD=1e9+;
  18. const int maxn=1e6+;
  19. int f(string s){
  20. int num=;
  21. int len=s.size();
  22. for(int i=;i<len;i++)if(s[i]>''||s[i]<'')return -;
  23. for(int i=;i<len;i++)num=num*+s[i]-'';
  24. return num;
  25. }
  26. int main(){
  27. string sa,sb;
  28. cin>>sa;
  29. getchar();
  30. getline(cin,sb);
  31. int a=f(sa);
  32. int b=f(sb);
  33. if(a<=&&a>=&&(b<||b>))
  34. cout<<a<<" + ? = ?";
  35. else if(b<=&&b>=&&(a<||a>))
  36. cout<<"? + "<<b<<" = ?";
  37. else if(a<=&&a>=&&b<=&&b>=)
  38. cout<<a<<" + "<<b<<" = "<<a+b<<endl;
  39. else cout<<"? + ? = ?"<<endl;
  40. return ;
  41. }

L1-027 出租

注意 自定义的set这样写:set<int,greater<int> >st;

搞个vector就行了;

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
  4. #define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
  5. #define pb push_back
  6. #define pf push_front
  7. #define fi first
  8. #define se second
  9. typedef long long ll;
  10. typedef unsigned long long ull;
  11. typedef long double ldb;
  12. typedef double db;
  13. const db PI=acos(-1.0);
  14. const ll INF=0x3f3f3f3f3f3f3f3fLL;
  15. const int inf=0x3f3f3f3f;//0x7fffffff;
  16. const double eps=1e-;
  17. const ll MOD=1e9+;
  18. const int maxn=1e6+;
  19. int main(){
  20. string s;
  21. cin>>s;
  22. set<int,greater<int> >st;
  23. int len=s.size();
  24. for(int i=;i<len;i++){
  25. st.insert(s[i]-'');
  26. }
  27. vector<int>arr;
  28. set<int,greater<int> >::iterator it;
  29. for(it=st.begin();it!=st.end();it++){
  30. int x=*it;
  31. arr.pb(x);
  32. }
  33. vector<int>index;
  34. for(int i=;i<;i++){
  35. for(int j=;j<arr.size();j++){
  36. if(arr[j]==s[i]-'')index.pb(j);
  37. }
  38. }
  39. cout<<"int[] arr = new int[]{";
  40. for(int i=;i<arr.size();i++){
  41. if(i)cout<<",";
  42. cout<<arr[i];
  43. }
  44. cout<<"};"<<endl;
  45. cout<<"int[] index = new int[]{";
  46. for(int i=;i<index.size();i++){
  47. if(i)cout<<",";
  48. cout<<index[i];
  49. }
  50. cout<<"};"<<endl;
  51.  
  52. return ;
  53. }

L1-030 一帮一

就是vector  你不能这样读进来

错误写法:

rep(i,1,n)scanf("%d",&v[i]);

正确写法:

rep(i,1,n)scanf("%d",&x),v.pb(x);

不会用pair,只会结构,这题可能用pair更好做吧;

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
  4. #define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
  5. #define pb push_back
  6. #define pf push_front
  7. #define fi first
  8. #define se second
  9. typedef long long ll;
  10. typedef unsigned long long ull;
  11. typedef long double ldb;
  12. typedef double db;
  13. const db PI=acos(-1.0);
  14. const ll INF=0x3f3f3f3f3f3f3f3fLL;
  15. const int inf=0x3f3f3f3f;//0x7fffffff;
  16. const double eps=1e-;
  17. const ll MOD=1e9+;
  18. const int maxn=1e5+;
  19. struct node{int sex,vis;string name;};
  20. struct ANS{string fi,se;};
  21. int main(){
  22. int n;
  23. cin>>n;
  24. vector<node>v;
  25. rep(i,,n){
  26. node tmp;
  27. cin>>tmp.sex>>tmp.name;
  28. tmp.vis=;
  29. v.push_back(tmp);
  30. }
  31. vector<ANS>ans;
  32. int len=v.size();
  33. for(int i=;i<len;i++){
  34. for(int j=len-;j>=;j--){
  35. if(v[i].sex!=v[j].sex&&v[j].vis==&&v[i].vis==){
  36. ANS tmp;
  37. tmp.fi=v[i].name;
  38. tmp.se=v[j].name;
  39. ans.pb(tmp);
  40. v[i].vis=,v[j].vis=;
  41. }
  42. }
  43. }
  44. len=ans.size();
  45. for(int i=;i<len;i++)
  46. cout<<ans[i].fi<<" "<<ans[i].se<<endl;
  47. system("pause");
  48. return ;
  49.  
  50. }

L1-039 古风排版

这题挺有意思的;也不是很难;

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
  4. #define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
  5. #define pb push_back
  6. #define pf push_front
  7. #define fi first
  8. #define se second
  9. typedef long long ll;
  10. typedef unsigned long long ull;
  11. typedef long double ldb;
  12. typedef double db;
  13. const db PI=acos(-1.0);
  14. const ll INF=0x3f3f3f3f3f3f3f3fLL;
  15. const int inf=0x3f3f3f3f;//0x7fffffff;
  16. const double eps=1e-;
  17. const ll MOD=1e9+;
  18. const int maxn=1e5+;
  19. int main(){
  20. int n,num;
  21. cin>>n;
  22. string s;
  23. getchar();
  24. getline(cin,s);
  25. vector<char>v[];
  26. int len=s.size();
  27. for(int i=len-;i>=;i--){
  28. if((i+)%n==)num=n;
  29. else num=(i+)%n;
  30. v[num].pb(s[i]);
  31. }
  32. // cout<<"test :"<<endl;
  33. if(len%n==)num=n;
  34. else num=len%n;
  35. for(int i=;i<=n;i++){
  36. if(i>num)cout<<" ";
  37. for(int j=;j<v[i].size();j++){
  38. cout<<v[i][j];
  39. }
  40. cout<<endl;
  41. }
  42.  
  43. return ;
  44. }

L1-044 稳赢

注意取余这么写:cnt%(k+1)==0

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
  4. #define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
  5. #define pb push_back
  6. #define pf push_front
  7. #define fi first
  8. #define se second
  9. typedef long long ll;
  10. typedef unsigned long long ull;
  11. typedef long double ldb;
  12. typedef double db;
  13. const db PI=acos(-1.0);
  14. const ll INF=0x3f3f3f3f3f3f3f3fLL;
  15. const int inf=0x3f3f3f3f;//0x7fffffff;
  16. const double eps=1e-;
  17. const ll MOD=1e9+;
  18. const int maxn=1e5+;
  19. int main(){
  20. int k;
  21. scanf("%d",&k);
  22. string s;
  23. int cnt=,flag;
  24. while(cin>>s){
  25. if(s[]=='E')break;
  26. cnt++;
  27. // cout<<"test "<<s<<" "<<cnt<<": "<<endl;
  28. if(cnt%(k+)==)flag=;
  29. else flag=;
  30. if(flag)cout<<s<<endl;
  31. else {
  32. if(s[]=='C')cout<<"Bu"<<endl;
  33. else if(s[]=='B')cout<<"JianDao"<<endl;
  34. else if(s[]=='J')cout<<"ChuiZi"<<endl;
  35. }
  36. }
  37. // system("pause");
  38. return ;
  39. }

L1-046 整除光棍

这题本来想暴力,但必然是妥妥的T了

然后考虑模拟手算的除法;

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
  4. #define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
  5. #define pb push_back
  6. #define pf push_front
  7. #define fi first
  8. #define se second
  9. typedef long long ll;
  10. typedef unsigned long long ull;
  11. typedef long double ldb;
  12. typedef double db;
  13. const db PI=acos(-1.0);
  14. const ll INF=0x3f3f3f3f3f3f3f3fLL;
  15. const int inf=0x3f3f3f3f;//0x7fffffff;
  16. const double eps=1e-;
  17. const ll MOD=1e9+;
  18. const int maxn=1e5+;
  19. int main(){
  20. ll ans,x,s=,n=;
  21. cin>>x;
  22. while(s<x)s=s*+,n++;
  23. while(){
  24. cout<<s/x;
  25. s%=x;
  26. if(s==){
  27. ans=s;
  28. break;
  29. }
  30. s=s*+;
  31. n++;
  32. }
  33. cout<<" "<<n<<endl;
  34. // system("pause");
  35. return ;
  36. }

L1-054 福到了

这题推了好久,其实就一个东西,旋转180度的话,要交换的满足 x1+x2=n+1,y1+y2=n+1;

因为他们绕着中心旋转180;

也不用转换,直接判断输出就是了;

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
  4. #define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
  5. #define pb push_back
  6. #define pf push_front
  7. #define fi first
  8. #define se second
  9. typedef long long ll;
  10. typedef unsigned long long ull;
  11. typedef long double ldb;
  12. typedef double db;
  13. const db PI=acos(-1.0);
  14. const ll INF=0x3f3f3f3f3f3f3f3fLL;
  15. const int inf=0x3f3f3f3f;//0x7fffffff;
  16. const double eps=1e-;
  17. const ll MOD=1e9+;
  18. const int maxn=1e5+;
  19. char mp[][];
  20. int main(){
  21. char c;
  22. int n;
  23. scanf("%c %d",&c,&n);
  24. rep(i,,n){
  25. getchar();
  26. rep(j,,n){
  27. scanf("%c",&mp[i][j]);
  28. }
  29. }
  30. // cout<<"test :"<<endl;
  31. // rep(i,1,n){
  32. // rep(j,1,n){
  33. // printf("%c",mp[i][j]);
  34. // }
  35. // cout<<endl;
  36. // }
  37. int cen=n+;
  38. bool issame=;
  39. rep(i,,n){
  40. rep(j,,n){
  41. int x=cen-i;
  42. int y=cen-j;
  43. if(mp[x][y]!=mp[i][j])issame=;
  44. }
  45. }
  46. if(issame){
  47. cout<<"bu yong dao le"<<endl;
  48. rep(i,,n){
  49. rep(j,,n){
  50. if(mp[i][j]==' ')cout<<" ";
  51. else cout<<c;
  52. }
  53. cout<<endl;
  54. }
  55. return ;
  56. }
  57.  
  58. rep(i,,n){
  59. rep(j,,n){
  60. int x=cen-i;
  61. int y=cen-j;
  62. if(mp[x][y]!=' ')printf("%c",c);
  63. else printf(" ");
  64. }
  65. cout<<endl;
  66. }
  67. // shit: system("pause");
  68. return ;
  69. }

L1-043 阅览室 :

其实就是遍历,注意一下细节就行了;

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
  4. #define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
  5. #define pb push_back
  6. #define pf push_front
  7. #define fi first
  8. #define se second
  9. typedef long long ll;
  10. typedef unsigned long long ull;
  11. typedef long double ldb;
  12. typedef double db;
  13. const db PI=acos(-1.0);
  14. const ll INF=0x3f3f3f3f3f3f3f3fLL;
  15. const int inf=0x3f3f3f3f;//0x7fffffff;
  16. const double eps=1e-;
  17. const ll MOD=1e9+;
  18. const int maxn=1e3+;
  19. struct book{bool flag;int time;};
  20. int get(int h,int m){return h*+m;}
  21. book a[maxn];
  22. int main(){
  23. rep(i,,maxn)a[i].flag=;
  24. int num,h,m,n;
  25. char op;
  26. scanf("%d",&n);
  27. while(n--){
  28.  
  29. int cnt=,time=;
  30. while(){
  31. scanf("%d %c %d:%d",&num,&op,&h,&m);
  32. if(num==)break;
  33. if(op=='S'){
  34. a[num].flag=,a[num].time=get(h,m);
  35. }
  36. else if(a[num].flag==){
  37. time+=get(h,m)-a[num].time;
  38. a[num].flag=;
  39. cnt++;
  40. }
  41. }
  42. if(cnt==&&time==)cout<<"0 0"<<endl;
  43. else printf("%d %.0lf\n",cnt,time*1.0/cnt);
  44. }
  45. // system("pause");
  46. return ;
  47. }

L1-049 天梯赛座位分配

挺有意思的,注意格式输出,然后就是用一个nun记录已经安排满的队伍,如果没满就一直放,再记个pos表示位置,就行了;

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
  4. #define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
  5. #define pb push_back
  6. #define pf push_front
  7. #define fi first
  8. #define se second
  9. typedef long long ll;
  10. typedef unsigned long long ull;
  11. typedef long double ldb;
  12. typedef double db;
  13. const db PI=acos(-1.0);
  14. const ll INF=0x3f3f3f3f3f3f3f3fLL;
  15. const int inf=0x3f3f3f3f;//0x7fffffff;
  16. const double eps=1e-;
  17. const ll MOD=1e9+;
  18. const int maxn=1e3+;
  19. int team[maxn];
  20. vector<int>ans[maxn];
  21. int main(){
  22.  
  23. int n,sum=;
  24. scanf("%d",&n);
  25. rep(i,,n){
  26. scanf("%d",&team[i]);
  27. team[i]*=;
  28. }
  29.  
  30. int pos=,num=;
  31. while(num<n){
  32.  
  33. for(int i=;i<=n;i++){
  34. if(team[i]!=){
  35. team[i]--,ans[i].pb(pos);
  36. if(num==n-)pos+=;
  37. else pos++;
  38. if(team[i]==)num++;
  39. }
  40.  
  41. }
  42.  
  43. }
  44. rep(i,,n){
  45. printf("#%d\n",i);
  46. for(int j=;j<ans[i].size();j++){
  47. printf("%d%c",ans[i][j],(j+)%==?'\n':' ');
  48. }
  49. }
  50. // system("pause");
  51. return ;
  52. }

L1-059 敲笨钟

做法:暴力枚举一下,然后注意读掉回车;

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define per(i,j,k) for(int i=k;i>=j;i--)
  4. int main(){
  5. int n;
  6. cin>>n;
  7. string s;
  8. getchar();
  9. while(n--){
  10. getline(cin,s);
  11. int flag1=,flag2=;
  12. int len=s.size();
  13. for(int i=;i<len;i++){
  14. if(s[i]==','){
  15. if(s[i-]=='g'&&s[i-]=='n'&&s[i-]=='o')flag1=;
  16. }
  17.  
  18. if(s[i]=='.'){
  19. if(s[i-]=='g'&&s[i-]=='n'&&s[i-]=='o')flag2=;
  20. }
  21.  
  22. }
  23. if(flag1&&flag2){
  24. int cnt=,seat;
  25. for(int i=len-;i>=;i--){
  26. if(s[i]==' ')cnt++;
  27. if(cnt>=){
  28. seat=i;
  29. break;
  30. }
  31. }
  32. for(int i=;i<=seat;i++)printf("%c",s[i]);
  33. cout<<"qiao ben zhong."<<endl;
  34.  
  35. }
  36.  
  37. else cout<<"Skipped"<<endl;
  38.  
  39. }
  40.  
  41. return ;
  42. }

L1-064 估值一亿的AI核心代码

这题挺有意思的;

解法:如果给你一个字符串,单纯让你替换单词,频繁用string的搜索是很麻烦的,参考了大神的做法;

就是搞个vector<string>v ; 这样你每次截取单词,空格,和标点符号就很方便,然后按题目意思模拟即可;

PS:有个函数 isalnum 就是判断是否为数字或者字母;

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
  4. #define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
  5. #define pb push_back
  6. #define pf push_front
  7. #define fi first
  8. #define se second
  9. typedef long long ll;
  10. typedef unsigned long long ull;
  11. typedef long double ldb;
  12. typedef double db;
  13. const db PI=acos(-1.0);
  14. const ll INF=0x3f3f3f3f3f3f3f3fLL;
  15. const int inf=0x3f3f3f3f;//0x7fffffff;
  16. const double eps=1e-;
  17. const ll MOD=1e9+;
  18. const int maxn=1e3+;
  19. int main(){
  20. int n;
  21. cin>>n;
  22. getchar();
  23. while(n--){
  24. string s;
  25. vector<string>v;
  26. getline(cin,s);
  27. cout<<s<<endl<<"AI: ";
  28. int len=s.size();
  29. for(int i=;i<len;i++){
  30. if(s[i]=='?')s[i]='!';
  31. else if(isupper(s[i])&&s[i]!='I')s[i]=tolower(s[i]);
  32. }
  33. for(int i=;i<len; ){
  34. string tmp="";
  35. if(isalpha(s[i])){
  36. while(isalpha(s[i])&&i<len)tmp+=s[i++];
  37. }
  38. else if(isdigit(s[i])){
  39. while(isdigit(s[i])&&i<len)tmp+=s[i++];
  40. }
  41. else if(s[i]==' '){
  42. tmp=" ";
  43. while(s[i]==' ')i++;
  44. }
  45.  
  46. else {
  47. tmp+=s[i++];
  48. if(!v.empty()&&v.back()==" ")v.pop_back();
  49. }
  50. if(tmp==" "&&(v.empty()||i==len))continue;
  51. v.pb(tmp);
  52. }
  53.  
  54. for(int i=;i<v.size();i++){
  55. if(v[i]=="I"||v[i]=="me")v[i]="you";
  56. else if(v[i]=="you"){
  57. if(i<||!(v[i-].size()==&&!isalnum(v[i-][])))continue;
  58. if(v[i-]=="can")v[i-]="I",v[i]="can";
  59. if(v[i-]=="could")v[i-]="I",v[i]="could";
  60. }
  61. }
  62. for(int i=;i<v.size();i++)cout<<v[i];
  63. cout<<endl;
  64. }
  65. system("pause");
  66. return ;
  67. }

未完待续;

PTA 天梯赛 L1的更多相关文章

  1. 『ACM C++』 PTA 天梯赛练习集L1 | 001-006

    应师兄要求,在打三月底天梯赛之前要把PTA上面的练习集刷完,所以后面的时间就献给PTA啦~ 后面每天刷的题都会把答案代码贡献出来,如果有好的思路想法也会分享一下~ 欢迎大佬提供更好的高效率算法鸭~ - ...

  2. 『ACM C++』 PTA 天梯赛练习集L1 | 052-053

    今日刷题,水题水题 ------------------------------------------------L1-052------------------------------------ ...

  3. 『ACM C++』 PTA 天梯赛练习集L1 | 048-49

    今日刷题048-049 ------------------------------------------------L1-048---------------------------------- ...

  4. 『ACM C++』 PTA 天梯赛练习集L1 | 040-41

    近期安排 校赛3.23天梯赛3.30华工校赛 4.21省赛 5.12 ------------------------------------------------L1-040----------- ...

  5. PTA天梯赛训练题L1-064:估值一亿的AI核心代码(字符串模拟)

    Update:smz说regex秒过Orz,yzd记在这里了. 听说今年天梯赛有个烦人的模拟,我便被队友逼着试做一下……一发15,二发20.记一记,要不然枉费我写这么久…… 自己还是代码能力太菜了,校 ...

  6. 『ACM C++』 PTA 天梯赛练习集L1 | 021-024

    忙疯警告,这两天可能进度很慢,下午打了一下午训练赛,训练赛的题我就不拿过来的,pta就做了一点点,明天又是满课的一天,所以进度很慢啦~ -------------------------------- ...

  7. 『ACM C++』 PTA 天梯赛练习集L1 | 044-45

    记录今日刷题 ------------------------------------------------L1-044--------------------------------------- ...

  8. 『ACM C++』 PTA 天梯赛练习集L1 | 042-43

    记录刷题情况 ------------------------------------------------L1-042--------------------------------------- ...

  9. 『ACM C++』 PTA 天梯赛练习集L1 | 036-037

    这几天比较忙,所以随便做做水题了,得赶紧把英剧搞完啊啊啊啊啊啊 ------------------------------------------------L1-036-------------- ...

随机推荐

  1. java 加法变乘法

    加法变乘法 我们都知道:1+2+3+ - + 49 = 1225 (1) 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如: 1+2+3+...+10*11+12+...+27*28 ...

  2. 解决win10创建Django工程,运行django-admin.py startproject 工程名,失败的问题

          在看我这篇教程的前提是你应该已经正确装好python和Django了,好了,废话不说了,正题走你!你现在是不是很纠结自己运行django-admin.py startproject 工程名 ...

  3. 挖洞经验 | 绕过WAF限制利用php:方法实现OOB-XXE漏洞利用

    几个星期以前,作者在某个OOB-XXE漏洞测试中遇到过这样一种场景:目标应用后端系统WAF防火墙阻挡了包含DNS解析在内的所有出站请求(Outgoing Request),但最终,通过利用php:// ...

  4. 小程序导航组件navigator活学活用

    小程序开发中必不可少的组件navigator,虽然使用频率非常高,但是却没多少人能灵活运用. 先说navigator组件的用处: 它的主要用处是跳转执行,跳转可分为当前页面内跳转.前往页面外部的跳转. ...

  5. Metasploit学习笔记——网络服务渗透攻击

    1.内存攻防技术 1.1缓冲区溢出漏洞机理 1.2栈溢出利用机理 1.3缓冲区溢出利用的限制条件 2.网络服务渗透攻击面 3. Windows服务渗透攻击实战案例——MS08-067安全漏洞 示例代码 ...

  6. POJ 3692:Kindergarten 求补图的最大点独立集 头一次接触这样的做法

    Kindergarten Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5884   Accepted: 2877 Desc ...

  7. POJ 1961:Period

    Period Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 14280 Accepted: 6773 Description F ...

  8. TensorFlow中的L2正则化函数:tf.nn.l2_loss()与tf.contrib.layers.l2_regularizerd()的用法与异同

    tf.nn.l2_loss()与tf.contrib.layers.l2_regularizerd()都是TensorFlow中的L2正则化函数,tf.contrib.layers.l2_regula ...

  9. 071-PHP数组合并

    <?php $arr1=array('a','b','c'); //定义一个数组 echo '数组$arr1的信息:<br />'; print_r($arr1); //输出数组信息 ...

  10. 记录一次SQLServer 2019 MDS问题的排查

    问题表象: MDS网页里看不到任何建立的模型和实体. 用Excel add in连接,提示SQLServer授权过期. 但实际上SQLServer是企业版,目前并没有过期. 背景分析: 我们的环境是从 ...