专栏文章
P14337 [JOI2020 预选赛 R2] 求和 / Digit Sum
P14337题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mingza9c
- 此快照首次捕获于
- 2025/12/02 02:15 3 个月前
- 此快照最后确认于
- 2025/12/02 02:15 3 个月前
定义 为有多少个数经过若干次操作可以变成 ,而我们的 没有算上 本身(不进行操作的情况),因此最终答案为 。
设一个数 经过操作后可以得到数 ,得到转移方程:。对于每个 ,若其大于 ,那么统计它也没有意义,可以加特判跳过。
设一个数 经过操作后可以得到数 ,得到转移方程:。对于每个 ,若其大于 ,那么统计它也没有意义,可以加特判跳过。
代码:
CPP#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
const int N = 1e6 + 10;
int n;
int f[N];
inline int add(int k){
int cnt = 0;
while(k){
cnt += k % 10;
k /= 10;
}
return cnt;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin >> n;
for(int i = 1;i <= n;i ++){
if(i + add(i) > n)continue;
f[i + add(i)] += f[i] + 1;
}
cout << f[n] + 1;
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...