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

Blue_wonders
即使只是片刻的火花,也能在仰望黑夜的人心中留下久久不灭的美丽光芒。搬运于
2025-08-24 21:26:43,当前版本为作者最后更新于2019-02-22 21:57:56,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题目没读懂的往这看,详细解释题目输入输出
按照题意简单的模拟(绝对简单易懂)
这次排坑和思路放在一起了
样例输入: 1 , 0 + 2 , 1 第一个数十位 第一个数个位 第二个数十位 第二个数个位 相加变成 0 , 0 , 0 , 0 , 3 , 1 (这里是每一位的进位大小) 13 11 7 5 3 2 所以变成了 0 , 0 , 0 , 1 , 0 , 1 输出按照从高位到低位输出 1 , 0 , 1 百位 十位 个位 样例输出:1,0,1 自己写的输入,并附上自己的做法: 输入:12,1,4,6,8+26,4,7,9,5 输出:3,6,1,3,0,1 做法:从后往前入(从个位输入,好处是方便判断数的位数) 位数表 十万 , 万 , 千 , 百 , 十 , 个 每一位的进制 13 11 7 5 3 2 1、输入第二个数 0 26 4 7 9 5 2、加上第一个数 0 38 5 11 15 13 3、从最小位 0 38 5 11 15+6 1 判断是否 0 38 5 11+7 0 1 需要进位 0 38 5+3 3 0 1 并进位 0 38+1 1 3 0 1 0+3 6 1 3 0 1 3 6 1 3 0 1 4、输出3,6,1,3,0,1AC代码在这
#include<bits/stdc++.h> using namespace std; string s; int c[7]={0,2,3,5,7,11,13};//判断每一位数进位的标准 int a[7];//存放每一位数的容器 void chack(int q){//进位函数 a[q+1]=a[q+1]+(a[q]/c[q]);//上一位加上这一位进的数 a[q]=a[q]%c[q];//这一位是进完位之后剩下的数 return; } int main(){ cin>>s;//按照字符串读入 int n=s.size(),i=n-1,u=1; while(i>=0){//从最后判断,从个位数加起 if(s[i]>='0'&&s[i]<='9'){//如果是数字 if(s[i-1]>='0'&&s[i-1]<='9'){//如果是两位数 a[u]=a[u]+(s[i-1]-48)*10+(s[i]-48);//在数位上加入这个数 i--;//前面的数已经被加上了,不能循环 } else a[u]=a[u]+s[i]-48;//是一位数,就在这个数位上加这个数 u++;//加入数字后,下一个数字要在下一个数位上 } if(s[i]=='+')u=1;//如果是加号,那么代表这个数输完了,重新从各位开始 i--;//循环下一个数 } for(int i=1;i<=5;i++)chack(i);//将每个数位都判断是否需要进位 int t=0;//t用来标记最大位的位置 for(int i=6;i>=1;i--)if(a[i]!=0){t=i;break;};//先找最大位是哪个 for(int i=t;i>=2;i--)cout<<a[i]<<",";//从最大位输出,一直输出到10位,后面加‘,’ cout<<a[1];//最后输出各位后面没有‘,’ return 0; }感谢大家看我的题解~!
- 1
信息
- ID
- 574
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者