QwQ,15分求助!按题意硬推的a……

P1553 数字反转(升级版)

@[Max6700](/user/935012) 为什么要转数字呢,倒着输出就行了,转数字会爆的。
by chenluohan @ 2023-05-25 22:40:27


@[chenluohan](/user/673083) a?
by Max6700 @ 2023-05-25 22:41:37


@[Max6700](/user/935012) 只要反转后把前导0删除就可以了呀
by chenluohan @ 2023-05-25 22:41:45


@[chenluohan](/user/673083) 啥意思?(蒟蒻不解
by Max6700 @ 2023-05-25 22:44:02


@[Max6700](/user/935012) 而且请您把样例测一下,好吗?
by chenluohan @ 2023-05-25 22:44:12


@[Max6700](/user/935012) 给你发一个我反转普通数字的代码。 ```cpp reverse(s.begin(),s.end()); if(s == "0"){ cout << 0; return 0; } while(s[0]=='0'){ s.erase(0,1); } cout << s; ```
by chenluohan @ 2023-05-25 22:46:20


@[chenluohan](/user/673083) 啊…… 改成这样,就可以了啊…… ```cpp #include<bits/stdc++.h> using namespace std; string s; string A,B;//前半段和后半段 int zt=1;//1==123,2==.,3==%,4==/ int xb;//下标 long long zh(string n)//普通的数字翻转 { long long a=0; for(int i=n.length()-1;i>=0;i--) { a=a*10LL+1LL*(n[i]-'0'); } return a; } long long zh2(string n)//小数点后抹0的翻转 { long long a=0; for(int i=n.length()-1;i>=0;i--) { a=a*10LL+1LL*(n[i]-'0'); } while(a%10==0 && a!=0) a/=10; return a; } int main(){ cin>>s; for(int i=0;i<s.length();i++) { if(s[i]=='.')//为小数则调出循环,接下半段 { zt=2; xb=i; break; } else if(s[i]=='%')//浅浅记一下 { zt=3; break; } else if(s[i]=='/')//分数同小数 { zt=4; xb=i; break; } A+=s[i];//去前半段,若全为数字,则没有后半段 } if(zt==2)//小数 { for(int i=xb+1;i<s.length();i++) B+=s[i]; cout<<zh(A)<<"."<<zh2(B); } else if(zt==3)//百分数 { cout<<zh(A); cout<<"%"; } else if(zt==4)//分数 { for(int i=xb+1;i<s.length();i++) B+=s[i]; cout<<zh(A)<<"/"<<zh(B); } else//普通数字 { cout<<zh(A); } return 0;//不怎么完美的结尾 } ``` 刚改的
by Max6700 @ 2023-05-25 22:46:45


@[Max6700](/user/935012) emm.... 整数时最多有20位 ~~话说这不是一道纯纯的模拟题吗,怎么做出了省选的感觉~~
by chenluohan @ 2023-05-25 22:49:10


@[chenluohan](/user/673083) ~~我哪知道……我怎么蒻……~~
by Max6700 @ 2023-05-25 22:49:55


@[Max6700](/user/935012) 不过似乎只用改一下整数部分反转的就行了
by chenluohan @ 2023-05-25 22:54:42


| 下一页