这道题有一个余九解法,还没懂
《然后这道题自己再做一遍》
我现在只是明白了暴力解法
核心代码就一句
sum+=a[ i ]-'0';
sum=sum+sum/10;
从头到尾的循环
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
char s[1000];
while(scanf("%s",s))
{
if(s[0]=='0') break;
int sum=0;
for(int i=0;s[i]!='\0';i++)
{
sum+=s[i]-'0';
if(sum>9)sum=sum+sum/10;
}
cout<<sum<<endl;
}
}
为什么可以从头到尾的捋,为什么可以对每次加和后的结果直接各位数值加和?
因为:
由于我们的要求是把 比如说 一个数为 ab 可以认为这个值等同于a+b ,所以对于数abcde 那么 ,其实可以替换成(a+b)cde
所以我们准许从头到尾的替换,而且必须替换的顺序必须是从头到尾。