洛谷 P3601 签到题
https://www.luogu.org/problemnew/show/P3601
一道关于欧拉函数的题。
读完题目以后我们知道所谓的$aindao(x)=x- \phi (x) $。
对于x小的情况下我们当然可以用 枚举因子或者线型筛求得,然而x打了以后就数组装不下了。
注意区间大小,我们完全可以只求这一部分区间内的x的$ \phi (x) $,数字移一下位置就好了。
然而求没一个数的欧拉函数值时我们只用到了,小于等于$\sqrt x$的质因子(就想线性筛一样),所以我们只需要晒出小于$\sqrt r$的素数是什么,然后了枚举区间中每一个数的倍数然后用公式进行不断地更新就好了。
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
#define LL long long
#define mod 666623333
LL prime[],vis[],tot,cnt,phi[];
LL l,r,ans;
void prepare()
{
for(int i=;i<=;i++)
{
if(!vis[i])prime[++tot]=i;
for(int j=;j<=tot&&prime[j]*i<=;j++)
{
vis[prime[j]*i]=;
if(i%prime[j]==)
{
// phi[i*prime[j]]=phi[i]*prime[j];
break;
}
// else phi[i*prime[j]]=phi[i]*phi[prime[j]];
}
}
}
LL A[],B[];
int main()
{
prepare();
scanf("%lld%lld",&l,&r);
for(LL i=;i<=r-l+;i++)phi[i]=B[i]=i+l-;
for(LL i=;i<=tot&&prime[i]*prime[i]<=r;i++)
{
LL lb=prime[i]*(l/prime[i]),rb=prime[i]*(r/prime[i]);
// cout<< lb<<" "<<rb<<"\n";
for(LL j=lb;j<=rb;j+=prime[i])
{
if(j>=l)
{
phi[j-l+]=phi[j-l+]/prime[i]*(prime[i]-);
while(B[j-l+]%prime[i]==)B[j-l+]/=prime[i];
}
}
} for(int i=;i<=r-l+;i++)
{
if(B[i]>)phi[i]=phi[i]/B[i]*(B[i]-); //剩下一堆大质数了。
ans+=l+i--phi[i];ans%=mod;
}
cout<<ans;
}
洛谷 P3601 签到题的更多相关文章
- A 洛谷 P3601 签到题 [欧拉函数 质因子分解]
题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 ...
- 洛谷P3601签到题(欧拉函数)
题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 ...
- 洛谷P3601 签到题
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- 洛谷3794 签到题IV
题目描述 给定一个长度为n的序列$a_1,a_2...a_n$,其中每个数都是正整数. 你需要找出有多少对(i,j),$1 \leq i \leq j \leq n$且$gcd(a_i,a_{i+1} ...
- 洛谷P3764 签到题 III
题目背景 pj组选手zzq近日学会了求最大公约数的辗转相除法. 题目描述 类比辗转相除法,zzq定义了一个奇怪的函数: typedef long long ll; ll f(ll a,ll b) { ...
- 【noip】跟着洛谷刷noip题2
noip好难呀. 上一个感觉有点长了,重开一个. 36.Vigenère 密码 粘个Openjudge上的代码 #include<cstdio> #include<iostream& ...
- [洛谷P1707] 刷题比赛
洛谷题目连接:刷题比赛 题目背景 nodgd是一个喜欢写程序的同学,前不久洛谷OJ横空出世,nodgd同学当然第一时间来到洛谷OJ刷题.于是发生了一系列有趣的事情,他就打算用这些事情来出题恶心大家-- ...
- 洛谷P5274 优化题(ccj)
洛谷P5274 优化题(ccj) 题目背景 CCJCCJ 在前往参加 Universe \ OIUniverse OI 的途中... 题目描述 有一个神犇 CCJCCJ,他在前往参加 Universe ...
- 洛谷 P4148 简单题 KD-Tree 模板题
Code: //洛谷 P4148 简单题 KD-Tree 模板题 #include <cstdio> #include <algorithm> #include <cst ...
随机推荐
- QCTF 2018线上赛 writeup
本次算是被QCTF打趴了,本来做题时间就少(公司无限开会,开了一天,伪借口),加上难度和脑洞的增大,导致这次QCTF又酱油了...就连最基本的签到题都没做出来...这就很气 好了,以下是解题思路 MI ...
- java模拟多线程
public class HTTPRequest implements Runnable { public void run() { //这里实现发送请求 } public static void ...
- Django之Form的ModelForm
form与model的终极结合. from django import forms class BookForm(forms.ModelForm): class Meta: model = model ...
- python中cursor操作数据库(转)
原文出处:http://doudouclever.blog.163.com/blog/static/175112310201284115340663/ python 操作数据库,要安装一个Python ...
- Batch梯度下降
1.之前讲到随机梯度下降法(SGD),如果每次将batch个样本输入给模型,并更新一次,那么就成了batch梯度下降了. 2.batch梯度下降显然能够提高算法效率,同时相对于一个样本,batch个样 ...
- code review的意义
https://blog.csdn.net/brodycai/article/details/19636621
- Hybrid app(cordova) 环境配置记录
node版本管理 NVM 安装过程 由于最新版 node 不兼容部分功能,所以需要安装 nvm 切换 node 版本 在 https://github.com/coreybutler/nvm-wind ...
- ruby 正则表达式 匹配所有符合规则的信息
假设一个字符串当中有很多符合规则的信息,下面的例子可以把所有匹配到的结果打印出来: message="afhadhffkdf414j9tr3j43i3433094jwoert223jwew1 ...
- 微信支付(java版本)_支付结果通知
应用场景: 支付完成后,微信会把相关支付结果和用户信息发送给商户,商户需要接收处理,并返回应答. 对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,微信会通过一定的策略定期重新 ...
- 密码强度的正则表达式(JavaScript)总结
简言 本文给出了两个密码强度的正则表达式方案,一个简单,一个更复杂和安全.并分别给出了两个方案的解析和测试程序.一般大家可以根据自己的项目的实际需要,自行定义自己的密码正则约定. 前言 用户注册时,都 ...