A 洛谷 P3601 签到题 [欧拉函数 质因子分解]
题目背景
这是一道签到题!
建议做题之前仔细阅读数据范围!
题目描述
我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数。
这题作为签到题,给出l和r,要求求。
输入输出格式
输入格式:
一行两个整数,l、r。
输出格式:
一行一个整数表示答案。
输入输出样例
233 2333
1056499
2333333333 2333666666
153096296
说明
对于30%的数据,。
对于60%的数据,。
对于100%的数据,,。
比赛时傻逼了一直想用lp[]进行质因子分解可是空间不够
其实只要筛出sqrt(r)范围的质数就可以了
不能对每个数直接质因子分解 根号会T
所以用了管用伎俩 每个质数枚举[l,r]范围的倍数进行质因子分解 复杂度O(n~nlogn)
// // main.cpp // AA // // Created by Candy on 2017/2/2. // Copyright © 2017年 Candy. All rights reserved. // #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; typedef long long ll; const int N=1e6+5,MOD=666623333; inline ll read(){char c=getchar();ll x=0,f=1;while(c<'0'||c>'9'){if(c=='-')f=-1; c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0'; c=getchar();}return x*f; } ll l,r; bool notp[N]; int p[N]; void sieve(int n){//printf("%d\n",n);for(int i=2;i<=n;i++){if(!notp[i]) p[++p[0]]=i;for(int j=1;j<=p[0]&&i*p[j]<=n;j++){notp[i*p[j]]=1;if(i%p[j]==0) break;}} } ll phi[N],x[N]; void solve(){for(int i=1;i<=r-l+1;i++) x[i]=phi[i]=i+l-1;for(int i=1;i<=p[0];i++){ll lb=p[i]*(l/p[i]),rb=p[i]*(r/p[i]);//printf("hi %d %d %d %d\n",i,p[i],lb,rb);for(ll j=lb;j<=rb;j+=p[i]) if(j>=l){phi[j-l+1]=phi[j-l+1]/p[i]*(p[i]-1);while(x[j-l+1]%p[i]==0) x[j-l+1]/=p[i];}}for(int i=1;i<=r-l+1;i++) if(x[i]>1) phi[i]=phi[i]/x[i]*(x[i]-1);//for(int i=1;i<=r-l+1;i++) printf("phi %d %lld\n",i+l-1,phi[i]); } ll ans; int main(int argc, const char * argv[]){l=read();r=read();sieve(sqrt(r)+1);solve();for(ll i=1;i<=r-l+1;i++) (ans+=i+l-1-phi[i])%=MOD;printf("%lld",ans);return 0; }
转载于:https://www.cnblogs.com/candy99/p/6361051.html
A 洛谷 P3601 签到题 [欧拉函数 质因子分解]相关推荐
- 数论 GCD 最大公约数 欧拉函数经典题 洛谷 CF1295D Same GCDs Codeforces1295D
前言 两个月了,我终于更了-- 这两个月忙(chen)于(mi)内(xiang)卷(le),现在终于出新文章啦,(也算兑现了当初的出数论题文章的承诺)~ 不说废话了,今天给大家介绍一道CF/洛谷上的 ...
- 洛谷 P2350 [HAOI2012]外星人(素因子分解,欧拉函数)
[HAOI2012]外星人 题目描述 艾莉欧在她的被子上发现了一个数字 NNN,她觉得只要找出最小的 xxx 使得,φx(N)=1\varphi^x(N) = 1φx(N)=1.根据这个 xxx 她就 ...
- (hdu step 7.2.1)The Euler function(欧拉函数模板题——求phi[a]到phi[b]的和)
题目: The Euler function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- hdu 1286 找新朋友 欧拉函数模版题
找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Des ...
- 洛谷P5274 优化题(ccj)
洛谷P5274 优化题(ccj) 题目背景 CCJCCJ 在前往参加 Universe \ OIUniverse OI 的途中... 题目描述 有一个神犇 CCJCCJ,他在前往参加 Universe ...
- HDU 5597 GTW likes function(规律+欧拉函数模板题)——BestCoder Round #66(div.1 div.2)
GTW likes function Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Oth ...
- ~~筛法求欧拉函数(附模板题)
模板 int primes[N], cnt; // primes[]存储所有素数 int euler[N]; // 存储每个数的欧拉函数 bool st[N]; // st[x]存储x是否被筛掉voi ...
- 【模板题】欧拉函数与线性筛求欧拉函数
欧拉函数是什么? 定义:对于正整数nnn,欧拉函数是小于或等于nnn的正整数中与nnn互质的数的个数,记作φ(n)\varphi (n)φ(n). φ(1)=1\varphi (1)=1φ(1)=1. ...
- TOJ 3990.I guess the gift is a bag! II(质因数、欧拉函数好题)
题目链接 : http://acm.tju.edu.cn/toj/showp3990.html Coach Yu has lots of bags, every bag has its number. ...
- 专题·莫比乌斯函数与欧拉函数【including 整除分块,积性函数,狄利克雷卷积,欧拉函数,莫比乌斯函数,莫比乌斯反演
初见安~又是好久没写博客了--加上CSP才炸了一波. 目录 一.整除分块 题解 二.积性函数 三.狄利克雷卷积 四.欧拉函数 五.莫比乌斯函数(mu) 六.莫比乌斯反演 一.整除分块 看个例题:洛谷P ...
最新文章
- KeyWordHelper-关键字提取类(注:使用第三方组件DictSeg.dll)
- visual studio怎么重启?(visual studio restart插件)
- 其实我就是个技术迷-自身定位及展望
- Dollar Dayz POJ - 3181
- spring mvc注解@RequestMapping
- 鸿蒙系统受谷歌影响吗,华为鸿蒙系统,会受到人们的欢迎吗?
- byte 类型_java知识总结(九):基本类型转换
- 手动安装K8s第五节:master节点kubectl命令部署
- 爬取豆瓣评论之——后来的我们
- Spring(26)——PathMatchingResourcePatternResolver
- Kindle商店请求出错怎么办?附解决办法
- LODOP属性和方法
- 步进电机stepmotor
- Linux中正则表达式详细命令及代码(附实验笔记)
- Zabbix监控之监控项
- FreeBSD硬盘分区和数据迁移相关资料
- 由GPS定位的经纬度转换成百度地图经纬度坐标
- 【计算机毕业设计】001基于SpringBoot的在线拍卖系统
- python 绪论(计算机编程语言)
- 给出市政工程研究生面试十个简述题并给出答案