题解 P4942 【小凯的数字】
为什么看到很多题解区的 dalao 都用逆元?是我太菜了吧
【分析】
首先,根据弃九验算法的原理,显然可以得到:一个 \(n\) 位数
\(a_1a_2a_3\dots a_n\equiv a_1+a_2+a_3+\dots+a_n(\mod 9)\)
证明:
对于第 \(k\) 位数 \(a_k\) ,它对答案的贡献为\(10^{n-k}\times a_k\%9(n\geq k)\)
当 \(n=k\) 时 \(10^{n-k}=10^{n-n}=1\)
当 \(n>k\) 时 \(10^{n-k}=10^{n-k-1}\times 10\equiv 10^{n-k-1}\times 1\equiv\dots\equiv 10^0=1(\mod 9)\)
所以第 \(k\) 为的 \(a_k\) 贡献为 \(a_k\) 累计得到上式
而对于 \(89101112\) 这样的数字,也同等于:
\(89101112\equiv8+9+1+0+1+1+1+2\equiv8+9+10+11+12(\mod 9)\)
所以我们要求的东西就变为了 \(\displaystyle \sum_{i=l}^ri\%9\)
那么,我们设 \(\displaystyle Last(n)=\sum_{i=1}^ni\%9\)
答案即变为 \(Last(r)-Last(l-1)\) ,当然,记得取正数
现在,问题转变为求解 \(Last(n)\)
\(\displaystyle \because Last(n)=\sum_{i=1}^ni\%9\)
而且 \(1+2+3+4+5+6+7+8+9=45\equiv 0(\mod 9)\)
所以直接有 \(Last(n)=Last(n\% 9)\)
我们 \(9\) 以内的脑算打表,剩下的直接求解即可
【代码】
那本蒟蒻就放 我码风极丑的 代码了
#include<iostream>
using namespace std;
inline int read(int ans){
char c=getchar();
while(c<48||c>57) c=getchar();
while(c>=48&&c<=57){
ans+=(c-48);
c=getchar();
if(ans>=9) ans-=9;
}
return ans;
}
int ar_d_Lst[]={0,1,3,6,1,6,3,1,0};
int main(){
int q,l,r,ans;
cin>>q;
while (q--){
l=read(8),r=read(0);
ans=ar_d_Lst[r]-ar_d_Lst[l];
if(ans<0) cout<<ans+9<<endl;
else cout<<ans<<endl;
}
return 0;
}
最后安利一下 本蒟蒻的博客
最新文章
- mongodb(分片)
- java-通讯stocket插件mina实例
- 数据库事务 及ACID
- javamail模拟邮箱功能发送电子邮件-基础实战篇(javamail API电子邮件实例)
- MyEclipse10导入工程jsp报错问题
- PHP代码实现MySQL读写分离
- HDOJ/HDU 1075 What Are You Talking About(字符串查找翻译~Map)
- 利用php的ob缓存机制实现页面静态化
- MSP430F149模拟IIC读写24C02程序
- Eclipse用法和技巧二十七:定义自己的快速联想词
- 每天一个Linux命令(23)--linux 目录结构(一)
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(七)图片上传功能
- python列表反转
- Autofac高级用法之动态代理
- Android图表库MPAndroidChart(十二)——来点不一样的,正负堆叠条形图
- MYSQL根据节点向上和向下查询所有节点
- 利用iftop找出是谁占用了带宽
- [转]SQL中的case when then else end用法
- CI入门
- 【Java】浅谈HashMap
热门文章
- 小程序地图开发周边信息POI展示为列表
- tools.eclipse.内存配置
- 126-PHP类__get()魔术方法
- 【数据结构】C++语言无锁环形队列的实现
- “战疫”需求不再等-京东云与AI【应急资源信息发布平台】召集开发者共同支援
- kafka管理神器-kafkamanager
- Android数据库(sqlite)之Room
- UVA - 1001 Say Cheese(奶酪里的老鼠)(flod)
- 四、SAP中转义字符的使用和不同数据类型所占长度不同
- CountDownLatch、CyclicBarrier、Semaphore的使用