正题

题目链接:https://ac.nowcoder.com/acm/contest/11179/E


题目大意

定义f(x)f(x)f(x)表示1x\frac{1}{x}x1​的混循环节长度(如果没有循环节就是000),TTT组询问给出l,rl,rl,r求
∑i=lrf(i)\sum_{i=l}^rf(i)i=l∑r​f(i)

1≤T≤100,1≤l≤r≤10151\leq T\leq 100,1\leq l\leq r\leq 10^{15}1≤T≤100,1≤l≤r≤1015


解题思路

设aia_iai​表示iii位之后的余数,那么出现循环节当且仅当aia_iai​出现重复。
ai=ai−1×10%n⇒ai=10i%na_i=a_{i-1}\times 10\% n\Rightarrow a_i=10^i\%nai​=ai−1​×10%n⇒ai​=10i%n
那么出现循环节一定满足存在一个正整数kkk使得
ai×10k≡ai(modn)a_i\times 10^k\equiv a_i(mod\ n)ai​×10k≡ai​(mod n)
⇒10k≡1(modngcd(ai,n))\Rightarrow 10^k\equiv 1(mod\ \frac{n}{gcd(a_i,n)})⇒10k≡1(mod gcd(ai​,n)n​)
我们知道10k≡1(modn)10^k\equiv 1(mod\ n)10k≡1(mod n)有解当且仅当gcd(10,n)=1gcd(10,n)=1gcd(10,n)=1。

也就是说我们要找到第一个iii使得gcd(10,ngcd(ai,n))=1gcd(10,\frac{n}{gcd(a_i,n)})=1gcd(10,gcd(ai​,n)n​)=1。

而aia_iai​每次乘十,所以相当于nnn每次在质因数中去掉一个222和555,直到和101010互质。

但是这样还没有结束,因为如果没有循环节就是000,而这里则会统计小数的长度,得减去这些情况,不难发现有循环节的话当且仅当存在某个10k%n=010^k\%n=010k%n=0,也就是说nnn只由222和555构成,暴力枚举这些数就好了。

时间复杂度:O(Tlog⁡2nlog⁡5n)O(T\log_2n\log_5 n)O(Tlog2​nlog5​n)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll P=998244353;
ll T,l,r;
int Ask(ll n){ll ans=n;for(ll i=1,pw=2;pw<=n;i++,pw=pw*2ll)ans=(ans+n/pw)%P;for(ll i=1,pw=5;pw<=n;i++,pw=pw*5ll)ans=(ans+n/pw)%P;for(ll i=1,pw=10;pw<=n;i++,pw=pw*10ll)ans=(ans-n/pw)%P;for(ll i=1,pw=1;pw<=n;i++,pw=pw*2ll)for(ll j=1,qw=1;pw*qw<=n;j++,qw=qw*5ll)(ans-=max(i,j))%=P;return (ans+P)%P;
}
signed main()
{scanf("%lld",&T);while(T--){scanf("%lld%lld",&l,&r);printf("%lld\n",(Ask(r)-Ask(l-1)+P)%P);}return 0;
}

牛客练习赛89E-牛牛小数点【数论】相关推荐

  1. 牛客练习赛89——牛牛小数点(未解决)

    牛牛小数点 题意: 题解: 本题先说结论: 对于一个数x=2a∗5b∗px=2^a*5^b*px=2a∗5b∗p 如果p=1,也就是质因子只有2和5,则x是不循环小数,即f(x)=0 如果p!=1,则 ...

  2. [ACM]【树形DP/LCA】牛客练习赛62 牛牛染颜色

    牛牛染颜色 传送门 题意:给出一个有根树,求满足条件的染色方案的数目,条件:任意两个染黑的点的LCA必须也为黑点. 思路: 我一看到LCA就会想到自己还不会倍增的恐惧 很显然的树形DP.既然是DP,就 ...

  3. E-牛牛小数点_牛客练习赛89(数学)

    E-牛牛小数点_牛客练习赛89 (nowcoder.com) 题目描述 牛牛想和点点交朋友, 于是点点给了牛牛一个问题. 定义关于小数 xxx 的函数 f(x)f(x)f(x), 表示 xxx 中两个 ...

  4. 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  5. 牛客练习赛68 B.牛牛的算术

    牛客练习赛68 B.牛牛的算术 题目链接 题目描述 牛牛最近学习了取模是什么 于是他看到了下面这一道题: 多次询问:每次询问包含一个正整数 n 要求你输出下列结果 ∏i=1n∑j=1i∑k=1ji×j ...

  6. 牛客练习赛63 C.牛牛的揠苗助长

    牛客练习赛63 C.牛牛的揠苗助长 题目链接 题目描述 牛牛有一块长度大小为n的菜园,他首先对这块菜园从1到n进行了编号,每一块地分别为1号.2号-n号菜地,然后他往每块菜地中都种下了一些水稻,一开始 ...

  7. 牛客练习赛68 A.牛牛的mex

    牛客练习赛68 A.牛牛的mex 题目链接 题目描述 牛牛现在有一个长度为 nnn 的序列 a1,a2,-,ana_1,a_2,\ldots,a_na1​,a2​,-,an​.现在牛牛有 qqq 次询 ...

  8. 牛客练习赛#105(A-D)

    牛客练习赛#105 文章目录 牛客练习赛#105 A.切蛋糕的贝贝 B.抱歉,这没有集美 C.打牌的贝贝 D.点分治分点 A.切蛋糕的贝贝 题意 有一个正n边形,想通过下列的切法切成面积比为1:1:4 ...

  9. 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...

  10. 牛客练习赛34 E little w and Digital Root(数位dp)

    title: 牛客练习赛34 E little w and Digital Root(数位dp) date: 2018-12-17 22:38:37 tags: 数位dp categories:ACM ...

最新文章

  1. 公开课报名 | 详解CNN-pFSMN模型以及在语音识别中的应用
  2. AutoHotkey热键脚本语言文件
  3. kafka streams_Kafka REST Proxy for MapR Streams入门
  4. 互联网又一个变态条款 “奋斗者协议”
  5. 你可能没听过的11个Python库,你有认识的吗?
  6. shell export 命令
  7. 【C++入门】C++ 输入输出和文件操作
  8. Zero Shot | 一文了解零样本学习
  9. C语言:基于Easyx库实现连连看小游戏
  10. 查看局域网所有ip地址
  11. ctc decoder
  12. 太实用了!Pytorch快速安装【清华源】 方法,最优国内镜像选择,妥妥的!
  13. 2021年三亚旅游行业发展现状分析:旅游总收入达747.03亿元,占GDP的89.43%[图]
  14. 软考 第十一章 软件知识产权基础知识
  15. PAMTRI:用于车辆重新识别的姿势感知多任务学习
  16. 阿里资深技术专家带你聊一聊——服务端的接口测试...
  17. Java面试题(八)-----如何将一段逗号分隔的字符串转换成一个字符串数组
  18. 微软打算用DNA存储数据 但成本和速度仍是个大问题
  19. 红米4高配版_标注:2016060_官方线刷包_救砖包_解账户锁
  20. React使用百度地图实现驾车路线规划

热门文章

  1. 密封槽设计标准_哈尔滨轴承 | 超全面机械密封选型
  2. python docx 字体大小_聊聊python办公自动化之Word(上)
  3. linux快速切换目录命令,Linux在命令行快速切换目录 - 米扑博客
  4. java 接口的静态方法_Java8新特性:接口的默认方法与接口的静态方法
  5. 使有用计算机不注意卫生,保护眼睛注意细节有哪些
  6. 如何开启jvm日志_做了10个小实验:搞懂了JVM三大参数类型
  7. python 防止转义_python字符串前加r、f、u、l 的区别
  8. git push被拒绝_规范git项目提交并自动生成项目commit log
  9. JAVA实验报告九异常处理_Java课后练习9(异常处理)
  10. C++二维数组作为函数参数