玄关

P1553 数字反转(升级版)

@[lucy2012](/user/1252442) 第二个注释后面的那个if的括号后多打了一个分号
by dontwannacry @ 2024-02-22 15:37:13


@[dontwannacry](/user/564225) 从55升到了65
by lucy2012 @ 2024-02-22 15:39:08


是一个问题
by lucy2012 @ 2024-02-22 15:39:41


@[lucy2012](/user/1252442) 是这样
by dontwannacry @ 2024-02-22 15:39:43


@[lucy2012](/user/1252442) 然后就是小数判0有问题
by dontwannacry @ 2024-02-22 15:41:07


@[lucy2012](/user/1252442) 之前写的时候我是一个字符一个字符判过去的,建议试试
by dontwannacry @ 2024-02-22 15:44:45


@[lucy2012](/user/1252442) 因为直接操作字符串的话需要比较熟悉string的操作的
by dontwannacry @ 2024-02-22 15:47:51


@[dontwannacry](/user/564225) ok,我看看
by lucy2012 @ 2024-02-22 15:49:46


AC代码@[lucy2012](/user/1252442) ```cpp #include<bits/stdc++.h> using namespace std; string c; int z[123456],h[123456],fz[123465],fh[123456]; int mid,flagz,flagh; int main() { cin>>c; int len=c.size(); if(len==1) { cout<<c; return 0; } for(int i=0;i<len;i++) { if(c[i]<'0'||c[i]>'9') mid=i; } if(mid!=0) { for(int i=0;i<mid;i++) z[i]=c[i]-'0'; for(int k=0;k<mid;k++) if(z[k]!=0) flagz=1; if(flagz!=0) { for(int j=mid-1;j>=0;j--) { if(z[j]!=0) break; else fz[j]=1; } for(int j=mid-1;j>=0;j--) { if(fz[j]==0) printf("%d",z[j]); } } else printf("0"); cout<<c[mid]; if(mid==len-1) return 0; for(int i=mid+1;i<len;i++) h[i]=c[i]-'0'; for(int q=mid+1;q<len;q++) if(h[q]!=0) flagh=1; if(flagh!=0) { for(int s=len-1;s>=mid+1;s--) { if(h[s]!=0) break; else fh[s]=1; } for(int s=mid+1;s<len;s++) { if(h[s]!=0) break; else mid++; } for(int s=len-1;s>=mid+1;s--) { if(fh[s]==0) printf("%d",h[s]); } } else printf("0"); } else { for(int i=0;i<len;i++) z[len-i-1]=c[i]-'0'; for(int j=0;j<len;j++) { if(z[j]!=0) break; else fz[j]=1; } for(int j=0;j<len;j++) { if(fz[j]==0) printf("%d",z[j]); } } return 0; } ``````
by 2023hkm @ 2024-02-22 15:53:14


@[2023hkm](/user/1240717) 虽然但是我觉得直接粘AC代码是一种不负责任
by dontwannacry @ 2024-02-22 16:12:40


|