公式
B - Sum of Digits Sequence 解説
by
B - Sum of Digits Sequence 解説
by
cn449
\(x\) に対して \(f(x)\) を返す関数 \(f\) を実装できれば、あとは愚直に問題文で与えられた式に従って \(A_0, A_1, \ldots, A_N\) と順番に値を計算することで答えを求めることができます。
\(f\) の実装のためには、\(x\) を \(10\) で割った余りを足し合わせて \(10\) で割ることを繰り返す方法や \(x\) を文字列に変換したものを用いるなどの方法があります。
実装例
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
auto f = [&](int x) -> int {
int res = 0;
while (x) {
res += x % 10;
x /= 10;
}
return res;
};
vector<int> a(n + 1);
a[0] = 1;
for (int i = 1; i <= n; i++) {
for (int j = 0; j < i; j++) a[i] += f(a[j]);
}
cout << a[n] << '\n';
}
投稿日時:
最終更新: