牛客练习赛89E-牛牛小数点【数论】
正题
题目链接: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∑rf(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(Tlog2nlog5n)O(T\log_2n\log_5 n)O(Tlog2nlog5n)
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-牛牛小数点【数论】相关推荐
- 牛客练习赛89——牛牛小数点(未解决)
牛牛小数点 题意: 题解: 本题先说结论: 对于一个数x=2a∗5b∗px=2^a*5^b*px=2a∗5b∗p 如果p=1,也就是质因子只有2和5,则x是不循环小数,即f(x)=0 如果p!=1,则 ...
- [ACM]【树形DP/LCA】牛客练习赛62 牛牛染颜色
牛牛染颜色 传送门 题意:给出一个有根树,求满足条件的染色方案的数目,条件:任意两个染黑的点的LCA必须也为黑点. 思路: 我一看到LCA就会想到自己还不会倍增的恐惧 很显然的树形DP.既然是DP,就 ...
- E-牛牛小数点_牛客练习赛89(数学)
E-牛牛小数点_牛客练习赛89 (nowcoder.com) 题目描述 牛牛想和点点交朋友, 于是点点给了牛牛一个问题. 定义关于小数 xxx 的函数 f(x)f(x)f(x), 表示 xxx 中两个 ...
- 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)
繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...
- 牛客练习赛68 B.牛牛的算术
牛客练习赛68 B.牛牛的算术 题目链接 题目描述 牛牛最近学习了取模是什么 于是他看到了下面这一道题: 多次询问:每次询问包含一个正整数 n 要求你输出下列结果 ∏i=1n∑j=1i∑k=1ji×j ...
- 牛客练习赛63 C.牛牛的揠苗助长
牛客练习赛63 C.牛牛的揠苗助长 题目链接 题目描述 牛牛有一块长度大小为n的菜园,他首先对这块菜园从1到n进行了编号,每一块地分别为1号.2号-n号菜地,然后他往每块菜地中都种下了一些水稻,一开始 ...
- 牛客练习赛68 A.牛牛的mex
牛客练习赛68 A.牛牛的mex 题目链接 题目描述 牛牛现在有一个长度为 nnn 的序列 a1,a2,-,ana_1,a_2,\ldots,a_na1,a2,-,an.现在牛牛有 qqq 次询 ...
- 牛客练习赛#105(A-D)
牛客练习赛#105 文章目录 牛客练习赛#105 A.切蛋糕的贝贝 B.抱歉,这没有集美 C.打牌的贝贝 D.点分治分点 A.切蛋糕的贝贝 题意 有一个正n边形,想通过下列的切法切成面积比为1:1:4 ...
- 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...
- 牛客练习赛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 ...
最新文章
- 亲手建造自己想要的生活
- 【JavaScript总结】JavaScript发展与学习内容
- 【FPGA】Spartan-6的时钟管理器(CMT)
- XML解析中的namespace初探
- iOS推送小结--swift语言
- 3月20日, Java 10 正式发布了!
- 计算机制图实训心得体会,绘图实训心得体会
- 格力机器人图解_格力工业机器人:是时候展示真正的实力了
- SAP S/4HANA Cloud 系统集成的一些场景介绍
- html 判断为空js,JavaScript判断DIV内容是否为空的方法
- 【听说有人想转码】入门----凯撒密码(密文解密,偏移)
- 超强的软件工具箱!100+个电脑必备工具 盘姬工具箱分享给大家
- Oracle alter 语句用法
- 华为数通(一):如何使用ssh console telnet来连接设备
- SplitContainer控件的理解
- Spring中关于IOC的详解
- java8 foreach 抛异常_Java Stream中的异常处理
- Pytorch-RuntimeError: size mismatch m1: [a x b], m2: [c x d]
- 极客大学算法训练营笔记
- 计算机图形学当前研究热点和发展方向,微软亚洲研究院网络图形组深入解释了图形学的现状、发展和未来...
热门文章
- lol修改服务器域名,LOL历史转区用户解冻大区官网自助系统地址 新版申请解冻账号网址...
- python xpath定位不到_Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)...
- 华科计算机课程设计,华中科大操作系统课程设计报告(附源码).doc
- qdialog 只有点击才能获得焦点_4 个突破点,让你的 Banner 点击率提升10倍
- python 中文编码差异_Python 编码为什么那么蛋疼?
- jdk解压版_命令行版的斗地主你玩过没?
- 算法题目中经典问题(易错点)
- 邮箱通知php,PHPMailer 发送邮件(含详细介绍及使用方法说明)
- python程序启动其他python程序,如何使用Python启动应用程序的实例?
- [MyBatisPlus]雪花算法