1 条题解
-
0
自动搬运
来自洛谷,原作者为

SebMa
**搬运于
2025-08-24 21:26:23,当前版本为作者最后更新于2017-11-15 20:30:04,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
错了好几次才AC;QAQ
细节太多,要周密考虑!
我的大概思路如下;
分成两块,先输出前一个数,判断有无符号,无return0,有再输出第二个数;
代码较简单,30行,供参考:
#include<bits/stdc++.h> using namespace std; int main() { string s; char p=0;//放符号 int cnt=0; cin>>s; for(int i=0;i<s.size();i++) { if(s[i]>='0'&&s[i]<='9') cnt++;//记录第一个数长度 else //遇到符号,记录,跳出 { p=s[i]; break; } } int x=cnt;//记下第一个数末后一个的位置,也就是符号的位置,如果是分数或小数就要用 cnt--; while(s[cnt]=='0'&&cnt>0) cnt--;//去除多余前导0; for(int i=cnt;i>=0;i--)//输出第一个数 cout<<s[i]; if(p==0) return 0;//无符号return 0 else if(p=='%') {cout<<p;return 0;} else cout<<p;//其他继续 int m=s.size()-1; while(s[x+1]=='0'&&x<m-1) x++;//去除末尾0 while(s[m]=='0'&&m>x+1) m--; //去除多余前导0 for(int i=m;i>x;i--)//输出第二个数 cout<<s[i]; return 0; } ###第一次写题解,求过。
- 1
信息
- ID
- 546
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者