题解:P14337 [JOI2020 预选赛 R2] 求和 / Digit Sum
hyc42_Happiness · · 题解
前置
传送门
AC记录
题意
有一个整数
操作为:将当前所持整数用十进制表示,将其各位数字之和加到该整数上。
思路
这是一道很好的动态规划题。
我们定义
然后就是状态转移。
假设这个这个数的个位数字之和记为
那么我们可以基本定下来:
可能就有人问:“为什么要加一”?
答:因为本身(就是原数字)也可以。
答案最后别忘了加一(因为自身
Code
void solve(){
cin>>n;
for(int i=1;i<=n;i++){
int t=i,sum=i;
while(t) sum+=t%10,t/=10;
f[sum]+=f[i]+1;
}
cout<<f[n]+1;
return;
}