一,思路:
1.利用dp和前缀和思想,预处理出来前2e5+10个数的情况。
2.状态转移方程:f[i] = f[i/10]+i%10;
二,代码:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
const int N = 2e5 + 10, M = 1e9 + 7;
typedef long long ll;
typedef pair<int, int> pii;
int f[N];
ll pre[N];
void Solved()
{
int n;
cin >> n;
cout<<pre[n]<<endl;
}
int main()
{
int t;
cin >> t;
//预处理出前2e5+10个数的情况
f[0] = 0;
for (int i = 1; i <= 2e5+10; i++)
{
f[i] = f[i / 10] + i % 10;
pre[i]=pre[i-1]+f[i];
}
while (t--)
{
Solved();
}
return 0;
}