专栏文章
题解:P14337 [JOI2020 预选赛 R2] 求和 / Digit Sum
P14337题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mingpzoq
- 此快照首次捕获于
- 2025/12/02 02:08 3 个月前
- 此快照最后确认于
- 2025/12/02 02:08 3 个月前
前置
题意
有一个整数 ,求有多少个大于 、小于 的数经过多次操作后变为 。
操作为:将当前所持整数用十进制表示,将其各位数字之和加到该整数上。
思路
这是一道很好的动态规划题。
我们定义 记为当前有 个大于 、小于 的数经过多次操作后变为 。
然后就是状态转移。
假设这个这个数的个位数字之和记为 ,那么更新过后的数字就会变为 。
那么我们可以基本定下来:
可能就有人问:“为什么要加一”?
答:因为本身(就是原数字)也可以。
答案最后别忘了加一(因为自身 也可以)。
Code
CPPvoid 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;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...