1 条题解
-
0
自动搬运
来自洛谷,原作者为

⚡LZSY01_XZY⚡
⚡LZSY01_XZY⚡这个家伙极其极其极其极其极其极其极其懒,留下了一串废话搬运于
2025-08-24 21:30:53,当前版本为作者最后更新于2019-01-26 10:03:46,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
我的想法是这样的:
可以发现第位 $\sum_{i=1}^{n\mod10^i/10^{i-1}-1})+(n\mod10^i/10^{i-1})*(n\mod10^i)+1$
故代码如下:
#include <cstdio> using namespace std; long long n; int sum[10]={0,1,3,6,10,15,21,28,36,45}; int get(int n) { if(n<0)return 0; return n; } long long get_ans(long long n) { long long res=0,a=1,b=0; while(n>0) { res=res+a*(45*(n/10)+sum[get(n%10-1)])+(n%10)*(b+1); b=b+(n%10)*a;a*=10; n/=10; } return res; } int main() { scanf("%lld",&n); printf("%lld\n",get_ans(n)); return 0; }我的代码里对打了表
觉得不错的话点个赞欧
- 1
信息
- ID
- 806
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 4
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者