hdu 1013

    xiaoxiao2022-07-14  153

    这道题有一个余九解法,还没懂

    《然后这道题自己再做一遍》

    我现在只是明白了暴力解法

    核心代码就一句

    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

    所以我们准许从头到尾的替换,而且必须替换的顺序必须是从头到尾。

     

    最新回复(0)