1553求助,95pt!

P1553 数字反转(升级版)

代码 ```cpp #include<bits/stdc++.h>//万能库 using namespace std; char arr[1000]; int n; bool flag=false; int main(){ gets(arr); for(int i=0;i<strlen(arr);i++){ if(arr[i]=='.'||arr[i]=='/'){ n=i-1; break; } if(arr[i]=='%'){ n=i-1; break; } if(i==strlen(arr)-1){ n=i; } } for(int i=0;i<=n;i++){ if(!flag&&arr[n-i]=='0'&&i!=n){} else{ cout<<arr[n-i]; flag=true; } } if(arr[n+1]=='.'||arr[n+1]=='/'){ flag=false; if(arr[n+1]=='.'){ cout<<"."; }else{ cout<<"/"; } for(int i=0;arr[n+2+i]=='0'&&n<strlen(arr)-3;i++){ n++; } for(int i=strlen(arr)-1;i>n+1;i--) { cout<<arr[i]; } } if(arr[n+1]=='%') { cout<<"%"; } return 0; } ```
by xiangzhenze611 @ 2024-02-12 14:09:01


A了 ``` #include<bits/stdc++.h> using namespace std; string str,s,z; int main(){ cin>>str; if(str=="0%"){ cout<<str; return 0; } if(str=="0.0"){ cout<<str; return 0; } if(str.size()==1){ cout<<str; return 0; } int x=str.length(); int k=x; if(str[x-2]=='.'&&str[x-1]=='0'){ if(str.size()==3){ cout<<str; return 0; } string d=str.substr(0,x-3); reverse(d.begin(),d.end()); int f=0; for(int i=0;i<x-3;i++){ if(d[i]!='0'){ break; } f++; } cout<<d.substr(f,x-3)+".0"; return 0; } if(str[x-3]=='.'&&str[x-2]=='0'&&str[x-1]=='%'){ if(str.size()==4){ cout<<str; return 0; } string d=str.substr(0,x-4); reverse(d.begin(),d.end()); int f=0; for(int i=0;i<x-4;i++){ if(d[i]!='0'){ break; } f++; } cout<<d.substr(f,x-3)+".0%"; return 0; } if(str[x-1]>='0'&&str[x-1]<='9'){ str.push_back('.'); } x=str.size(); bool dian=0; for(int i=0;i<x;i++){ if(str[i]=='%'||str[i]=='/'||str[i]=='.'){ reverse(s.begin(),s.end()); if(s.size()==1){ z=z+s; if(!dian){ z=z+str[i]; } if(str[i]=='.'){ dian=1; } s.clear(); continue; } if(dian){ z=z+s; if(str[i]=='%'){ z=z+str[i]; } continue; } int y=s.size(),res=0; for(int j=0;j<y;j++){ if(s[j]!='0'){ break; } res++; } z=z+s.substr(res,y); if(str[i]!='.'||i<x-1){ z=z+str[i]; } s.clear(); if(str[i]=='.'){ dian=1; } }else{ s.push_back(str[i]); } } x=z.size(); int f=x; for(int i=x-1;i>=0;i--){ if(z[i]=='%'||z[i]=='/'||z[i]=='.'){ f--; continue; } if(z[i]!='0'){ break; } f--; } if(isdigit(z[x-1])){ cout<<z.substr(0,f); }else{ cout<<z.substr(0,f)+z[x-1]; } x=z.size(); if(str[k-1]=='%'&&z[x-1]!='%'){ cout<<'%'; } return 0; } ``` 120行,真不错。。。
by ny_jerry2 @ 2024-02-12 17:22:28


|