jzoj2700-数字【数论,LCM】
正题
luogu题目链接:https://www.luogu.org/problemnew/show/P4193
题目大意
定义一个函数D(x)D(x)D(x)和S(x)S(x)S(x),S(x)S(x)S(x)表示xxx的各位之和
D(n)={D(S(n)),S≥10S(n)D(n)=\left\{\begin{matrix} \\D(S(n)),S\geq 10 \\S(n) \\ \\ \end{matrix}\right.D(n)=⎩⎪⎪⎨⎪⎪⎧D(S(n)),S≥10S(n)
求L∼RL\sim RL∼R之间有多个xxx满足x=D(k)∗kx=D(k)*kx=D(k)∗k
解题思路
因为(n−S(n))mod9=0(n-S(n))\ mod\ 9=0(n−S(n)) mod 9=0,所以D(n)=(n−1)mod9+1D(n)=(n-1)\ mod\ 9+1D(n)=(n−1) mod 9+1
22680modx=0(x∈[1..9])22680\ mod\ x=0(x\in [1..9])22680 mod x=0(x∈[1..9])
若一个数n=D(k)∗kn=D(k)*kn=D(k)∗k,那么n+22680=(k+22680D(k))∗D(k)n+22680=(k+\frac{22680}{D(k)})*D(k)n+22680=(k+D(k)22680)∗D(k)
证明:
(k+22680D(k))∗D(k)−k∗D(k)=22680(k+\frac{22680}{D(k)})*D(k)-k*D(k)=22680(k+D(k)22680)∗D(k)−k∗D(k)=22680
(k+22680D(k)−k)∗D(k)=22680(k+\frac{22680}{D(k)}-k)*D(k)=22680(k+D(k)22680−k)∗D(k)=22680
(k+22680D(k)−k)∗D(k)=22680(k+\frac{22680}{D(k)}-k)*D(k)=22680(k+D(k)22680−k)∗D(k)=22680
k∗D(k)+22680−k∗D(k)=22680k*D(k)+22680-k*D(k)=22680k∗D(k)+22680−k∗D(k)=22680
22680=2268022680=2268022680=22680
证毕
然后之间根据循环节预处理1∼226801\sim 226801∼22680的就好了
codecodecode
#include<cstdio>
#define LCM 22680
#define ll long long
using namespace std;
ll n,f[1000000],ans;
ll D(ll x)
{return (x-1)%9+1;}
ll ask(ll x)//1~x的个数
{return x/LCM*ans+f[x%LCM];}
int main()
{scanf("%lld",&n);for(ll i=1;i<=LCM;i++)//预处理{for(ll j=1;j<=9;j++)if(D(i/j)==j&&i%j==0){f[i]=1;ans++;break;}f[i]+=f[i-1];}while(n--){ll l,r;scanf("%lld%lld",&l,&r);printf("%lld\n",ask(r)-ask(l-1));}
}
jzoj2700-数字【数论,LCM】相关推荐
- C. Orac and LCM(数论lcm, gcd)
C. Orac and LCM 思路 题目非常简单,就是求gcd(lcm(i,j))foriinrange(n),forjinrange(n),i<jgcd(lcm_(i,\ j))\ for\ ...
- P2567 [SCOI2010]幸运数字
P2567 [SCOI2010]幸运数字 题意: 我们规定只含6或8的数字为幸运号码,而幸运号码的倍数我们也认为是幸运号码,问[l,r]中有多少个幸运号码? 题解: 第一反应是数位dp,但其实不是,我 ...
- 力扣算法题,第N个神奇数字(Python)
878.第N个神奇数字 题目描述: 一个正整数如果能被 a 或 b 整除,那么它是神奇的. 给定三个整数 n , a , b ,返回第 n 个神奇的数字.因为答案可能很大,所以返回答案 对 109 + ...
- python lcm()_Python LCM –找到LCM的2种方法
python lcm() In this article, we'll see different ways to find LCM in Python with program examples. ...
- 欢乐纪中某B组赛【2018.12.22】
前言 全暴力第9了解一下, 成绩 RankRankRank是有算别人的 RankRankRank PersonPersonPerson ScoreScoreScore AAA BBB CCC 999 ...
- CodeForces - 55D Beautiful numbers
题目链接:http://codeforces.com/problemset/problem/55/D 题意:求区间[L,R]有多少个Beautiful numbers.Beautiful number ...
- Codeforces 55D Beautiful numbers (数位DP)
题意:有T组询问,每次询问区间[l, r]中的beautiful number有多少.beautiful number是指这个数可以被组成它的数字整除.例如15是beautiful number,因为 ...
- Programiz C 语言教程·翻译完成
原文:Programiz 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN 学习资源 目录 C 简介 C 关键字和 ...
- CF 55D Beautiful numbers 数位DP
思路: 要找一个数能被他的所有反的数字整除,只需求出这个数能被其数字的LCM整除.而LCM最大为5*7*8*9=2520: 如果直接开dp[20][2520][2520]会超内存,而2^3,3^2,5 ...
最新文章
- Numpy生成二项分布随机数
- Mybatis和Spring整合
- OpenCV 在图像中寻找轮廓
- 二维非稳态导热微分方程_室内湿度影响验证:非真空型稳态法导热仪的正确使用方式...
- 9.6Gbps WiFi联盟宣布802.11ax协议!
- plsql大字段保存类型_大揭秘,学习python,为什么数据类型有这么重要
- SpringCloud工作笔记0104---SpringCloud和SpringCloudAlibaba的区别
- 免费的开放源代码的Web应用服务器:Tomcat
- 大数据——Spark GraphX介绍
- 2525 小b的字符串(模拟)
- 笑死人啦,史上最恶心的笑话
- 硬件工程师学习英语必备
- C语言中access/_access函数的使用
- 修改串口服务器,串口虚拟化 | 串口服务器Nport 5630 设置
- 姿态估计1-06:FSA-Net(头部姿态估算)-源码无死角讲解(1)-训练代码总览
- 水果店水果保鲜期延长方法,水果店经营保鲜方法
- C++数组连接求能被7整除的数
- 实验四:继承性和派生类 建一个楼房Building为基类,建立住宅类House继承Building,存储房号和面积,建立办公室类Office继承Building,存储办公室名称和电话
- PMP证书,项目经理事业进步的阶梯
- Linux系统之iftop的基本使用
热门文章
- Android 封装handler,android封装工作线程跟Handler工具类
- ufo帧率测试网站_一加7游戏续航测试 满电开始玩猜猜能玩多久
- Java IDEA断点调试
- [PAT乙级]1018 锤子剪刀布
- DevC++如何安装自定义头文件并使用
- C++用Prim算法实现无向图最小生成树
- 2021年广东工业大学第十五届文远知行杯程序设计竞赛(同步赛)C题 图墙+拉格朗日四平方数和定理
- 数据结构与算法--我们来玩丢手绢(约瑟夫环问题)
- 与php有区别_php://output和php://stdout的区别
- 李洪超 硬件工程师_西安职位|各类工程师,软件开发等多岗位招募,轻松月入过万,全程视频面试...