我的思路是:1.穷举五位数num
2.得到要拆分的俩个数字left right
3.求和sum
4.判断num和sum是否相同
5.输出
难度在2和3,
以14651举例,14651=11465+51146+65114+46511+14651*1
那么左边的数字left观察可知依次是num%10,num%100,num%1000…
右边的数字right依次是num/10,num/100,num/1000…
那么这里的sum=(num%10+num/10)+(num%100+num/100)+…
找到规律用循环改写为,
for(i=10;i<=10000;i*=10)
{
sum+=(num%i)*(num/i);
}
这样就完成了最难的2,3步。
附上截图:
牛客网的第二道题:这道题坑在一个scan()用一个getchar()接受,因为有回车的输入,还有最后的判断i==10