题目

首先我们可以通过经典容斥转化为计算\([1,x]\)的答案。

现在我们考虑一个数的个位对答案的贡献。

每做一次操作都会让个位加上十位然后取模,直到只有个位为止。

我们发现这个过程中,个位数前的系数永远都是\(1\),也就是个位数对答案的贡献系数为\(1\)。

这意味着我们对于一个固定的只有个位没确定的数,我们枚举其个位\(0\sim9\),其答案也是\(0\sim9\),所以我们可以直接求出\([1,\lfloor\frac n{10}\rfloor*10-1]\)的答案为\(\lfloor\frac n{10}\rfloor*45\)。

然后剩下\(n\mod10+1\)个数,直接计算很不优秀。

我们先暴力计算\(t=f(\lfloor\frac n{10}\rfloor)\),那么\(f(\lfloor\frac n{10}\rfloor)+i=t+i(i\in[0,9])\),这样只用暴力算一次,非常优秀。

  1. #include<bits/stdc++.h>
  2. #define ll long long
  3. using namespace std;
  4. int a[19];
  5. int f(ll x)
  6. {
  7. int len=0,i;
  8. while(x) a[++len]=x%10,x/=10;
  9. while(len^1)
  10. {
  11. for(i=1;i<len;++i) a[i]=(a[i]+a[i+1])%10;
  12. for(--len;!a[len]&&len^1;--len);
  13. }
  14. return a[len];
  15. }
  16. ll cal(ll x)
  17. {
  18. if(x<10) return x*(x+1)/2;
  19. ll s=x/10*45;int o=x%10,i,t=f(x/10*10);
  20. for(i=0;i<=o;++i) s+=(t+i)%10;
  21. return s;
  22. }
  23. int main()
  24. {
  25. int T;ll l,r;
  26. for(scanf("%d",&T);T;--T) scanf("%lld%lld",&l,&r),printf("%lld\n",cal(r)-cal(l-1));
  27. }

Comet OJ C1076 [Contest #4]求和的更多相关文章

  1. Comet OJ - Contest #2 简要题解

    Comet OJ - Contest #2 简要题解 cometoj A 模拟,复杂度是对数级的. code B 易知\(p\in[l,r]\),且最终的利润关于\(p\)的表达式为\(\frac{( ...

  2. Comet OJ - Contest #2简要题解

    Comet OJ - Contest #2简要题解 前言: 我没有小裙子,我太菜了. A 因自过去而至的残响起舞 https://www.cometoj.com/contest/37/problem/ ...

  3. Comet OJ - Contest #4--前缀和

    原题:Comet OJ - Contest #4-B https://www.cometoj.com/contest/39/problem/B?problem_id=1577传送门 一开始就想着暴力打 ...

  4. Comet OJ - Contest #11 题解&赛后总结

    Solution of Comet OJ - Contest #11 A.eon -Problem designed by Starria- 在模 10 意义下,答案变为最大数的最低位(即原数数位的最 ...

  5. Comet OJ - Contest #8

    Comet OJ - Contest #8 传送门 A.杀手皇后 签到. Code #include <bits/stdc++.h> using namespace std; typede ...

  6. Comet OJ - Contest #13-C2

    Comet OJ - Contest #13-C2 C2-佛御石之钵 -不碎的意志-」(困难版) 又是一道并查集.最近做过的并查集的题貌似蛮多的. 思路 首先考虑,每次处理矩形只考虑从0变成1的点.这 ...

  7. Comet OJ - Contest #13 「火鼠的皮衣 -不焦躁的内心-」

    来源:Comet OJ - Contest #13 芝士相关: 复平面在信息学奥赛中的应用[雾 其实是道 sb 题??? 发现原式貌似十分可二项式定理,然后发现确实如此 我们把 \(a^i\) 替换成 ...

  8. Comet OJ - Contest #13 「佛御石之钵 -不碎的意志-」(hard)

    来源:Comet OJ - Contest #13 一眼并查集,然后发现这题 tmd 要卡常数的说卧槽... 发现这里又要用并查集跳过访问点,又要用并查集维护联通块,于是开俩并查集分别维护就好了 一开 ...

  9. Comet OJ - Contest #5

    Comet OJ - Contest #5 总有一天,我会拿掉给\(dyj\)的小裙子的. A 显然 \(ans = min(cnt_1/3,cnt_4/2,cnt5)\) B 我们可以感性理解一下, ...

随机推荐

  1. 对url给后台传数据的时候特殊字符需要转义

    URL中的字符只能是ASCII字符,但是ASCII字符比较少,而URL则常常包含ASCII字符集以外的字符,如非英语字符,汉字,特殊符号等等,所以要对URL进行转换.这个过程就叫做URL编码,或者叫U ...

  2. ETL工具之kittle使用案例整理

    主花了一下午时间,收集全网,学习了下kittle,觉得该大v写的不错,特意整理给大家!学会这几个案例kittle基本就没问题了. 1.kettle案例一抽取gz格式文本内容保存到mongodb  ht ...

  3. Codeforces Round #303 (Div. 2) E. Paths and Trees Dijkstra堆优化+贪心(!!!)

    E. Paths and Trees time limit per test 3 seconds memory limit per test 256 megabytes input standard ...

  4. memset设置最大值

    初始化为最大值 memset(mp,0x7f,sizeof(mp));

  5. 更好的构建 Node 服务的工具

    更好的构建 Node 服务的工具 无论前端项目在打包后都发送给后台, 有时候自己想看看效果在运行 npm run build 后只是看到一个 build 文件夹,但是直接打开是无法浏览,因此需要开启一 ...

  6. (65)CRC32校验C语言版本

    #include<iostream> # include <stdio.h> # include <string.h> typedef unsigned int u ...

  7. oracle调整链接数

    50用户以下:8GB 混用,oracle 占据1GB~3GB内存,open_cursors:300,processes:10050-100用户:16GB 混用,oracle 占据3~4GB内存,ope ...

  8. 大哥带的Orchel数据库的报错注入

    0X01 使用报错注入需要使用类似 1=[报错语句],1>[报错语句],使用比较运算符,这样的方式进行报错注入(MYSQL仅使用函数报错即可),类似mssql报错注入的方式. news.jsp? ...

  9. mysql数据库表反向生成modes类

    一,如果你是windows,打开cmd,切换到desktop目录下 二,需要连接你的数据库,并且执行命令:sqlacodegen  --outfile models.py mysql+pymysql: ...

  10. 《Effective Java》读书笔记 - 2.创建和销毁对象

    Chapter 2 Creating and Destroying Objects item 1:Consider static factory methods instead of construc ...