30 帮忙看一下错哪了

P1553 数字反转(升级版)

```cpp #include <bits/stdc++.h> using namespace std; string s,t; int pos,l; void re(string &s,int a,int b){ l=b-a+1; t=""; while(s[b]=='0')b--; while(b-a+1)t+=s[b--]; if(t.empty())t="0"; s.replace(a,l,t); } int main(){ cin>>s; if((pos=s.find('.'))!=string::npos){ re(s,0,pos-1); re(s,s.find('.')+1,s.size()-1); while(s[s.size()-1]=='0'&&s.find('.')+2<s.size())s.resize(s.size()-1); } else if((pos=s.find('/'))!=string::npos){ re(s,0,pos-1); re(s,s.find('/')+1,s.size()-1); } else re(s,0,(pos=s.find('%'))-string::npos?pos-1:s.size()-1); cout<<s; return 0; } ```
by Ricky2008 @ 2022-10-25 18:39:03


@[Ricky2008](/user/312730) 看不懂
by luogu_MeiFengqi @ 2022-10-30 06:41:57


``` #include<bits/stdc++.h> using namespace std; char a[101]; char b[101]; char c[101]; void zs(int ll) { for(int i=ll-1;i>=0;i--) { if(a[i]=='0') a[i]='A'; else break; } if(a[0]=='A') printf("0"); for(int i=ll-1;i>=0;i--) if(a[i]!='A') printf("%c",a[i]); } void xs(int ll,int fhw,int q) { int qw=0; for(int i=0;i<fhw;i++) b[i]=a[i]; for(int i=fhw+1;i<ll;i++) c[q]=a[i],q++; for(int i=fhw-1;i>=0;i--) { if(b[i]=='0') b[i]='A'; else break; } int sl=strlen(c); for(int i=0;i<sl;i++) { if(c[i]=='0') c[i]='A'; else break; } for(int i=0;i<sl;i++) { if(c[i]!=0) break; else qw++; } for(int i=fhw-1;i>=0;i--) if(b[i]!='A') printf("%c",b[i]); printf("."); if(qw==sl) printf("0"); for(int i=sl-1;i>=0;i--) if(c[i]!='A') printf("%c",c[i]); } void fs(int ll,int fhw,int q) { int qw=0; for(int i=0;i<fhw;i++) b[i]=a[i]; for(int i=fhw+1;i<ll;i++) c[q]=a[i],q++; for(int i=fhw-1;i>=0;i--) { if(b[i]=='0') b[i]='A'; else break; } int sl=strlen(c); for(int i=0;i<sl;i++) { if(c[i]=='0') c[i]='A'; else break; } for(int i=0;i<sl;i++) { if(c[i]!=0) break; else qw++; } for(int i=fhw-1;i>=0;i--) if(b[i]!='A') printf("%c",b[i]); printf("/"); if(qw==sl) printf("0"); for(int i=sl-1;i>=0;i--) if(c[i]!='A') printf("%c",c[i]); } void bfs(int ll) { for(int i=ll-2;i>=0;i--) { if(a[i]=='0') a[i]='A'; else break; } if(a[0]=='A') printf("0%"); for(int i=ll-2;i>=0;i--) { if(a[i]!='A') printf("%c",a[i]); if(i==0) printf("%%"); } } int main() { int d=1,fh; scanf("%s",a); int l=strlen(a); for(int i=0;i<l;i++) { if(a[i]=='.') d=2,fh=i; else if(a[i]=='/') d=3,fh=i; else if(a[i]=='%') d=4; } if(d==1)zs(l); else if(d==2)xs(l,fh,0); else if(d==3)fs(l,fh,0); else if(d==4)bfs(l); return 0; } ```c++ 七十五分了,但139000.0这组数据错了,只能输出931.
by luogu_MeiFengqi @ 2022-11-05 08:20:10


|