题目链接:https://ac.nowcoder.com/acm/contest/634/C

链接:https://ac.nowcoder.com/acm/contest/634/C
来源:牛客网

题目描述

给出一个区间[L,R],求出[L,R]中孪生质数有多少对。

由于这是一个区间筛质数的模板题。所以小k不屑于去写。
所以出题人只好yy了另一道题。
定义k生互质数为满足y + k与y - k互质的数。

现在给出区间[L,R],你需要输出区间内k生互质数有多少对
我们说一对k生互质数在区间[L,R]内,当且仅当y+k∈[L,R]y+k∈[L,R]且y−k∈[L,R]y−k∈[L,R]

输入描述:

一行三个数字L,R,k

输出描述:

一行一个数字表示区间[L,R]内的k生互质数的对数
示例1

输入

复制

5 10 1

输出

复制

2

说明

分别为(5,7),(7,9)
示例2

输入

复制

287 11633 10

输出

复制

4532

备注:

0≤L,R≤10180≤L,R≤1018
1≤k≤1013 思路:
首先看到这个题,数据量这么大,肯定不是暴力,分析表达式:y + k与y - k互质,也就是gcd(y-k,y+k)=1 那么令x=y-k 所以有gcd(x,x+2*k)=1 这就好处理多了 显然x和x不是互质的 那么x和2*k肯定是互质的
所以gcd(x,2*k)互质。 所以这题就转化为求x的取值范围内有多少个数与2*k互质。 有求区间多少个数与某个数互质的算法 看博客:https://www.cnblogs.com/caijiaming/p/10745074.html
但是还是有坑点,具体看代码:
#include<iostream>
#include<vector>
using namespace std;
typedef long long LL;
void solve(LL n,LL l,LL r)
{
vector<LL> p;
for(LL i=;i*i<=n;i++)//求n的所有质因子
{
if(n%i==)
{
p.push_back(i);
while(n%i==)
{
n/=i;
}
}
}
if(n>) p.push_back(n); //容斥
// cout<<"*&"<<endl;
LL ans=;
LL len=p.size(); // cout<<len<<" "<<endl;
for(LL i=;i<((LL)<<len);i++)//二进制枚举
{
// cout<<"*"<<endl;
LL mul=,cnt=;
for(LL j=;j<len;j++)
{
// cout<<"*"<<endl;
if(i&(<<j))
{
cnt++;
mul*=p[j];
}
}
LL sum=(l-)/mul;
LL sum1=r/mul; if(cnt&) ans+=sum1-sum;
else ans-=sum1-sum;
}
if(l==) ans++;//坑点!!
cout<<(r-l+)-ans<<endl;
}
int main()
{
LL l,r,k;
cin>>l>>r>>k;
// if(l>r) swap(l,r);
if((r-*k)>=l) solve(k*,l,r-*k);
else cout<<""<<endl;
return ;
}

小y的质数的更多相关文章

  1. 牛客练习赛44 C 小y的质数 (数论,容斥定理)

    链接:https://ac.nowcoder.com/acm/contest/634/C 来源:牛客网 题目描述 给出一个区间[L,R],求出[L,R]中孪生质数有多少对. 由于这是一个区间筛质数的模 ...

  2. 牛客练习赛44 C:小y的质数

    链接:https://ac.nowcoder.com/acm/contest/634/C?tdsourcetag=s_pcqq_aiomsg 来源:牛客网 题目描述 给出一个区间\([L,R]\),求 ...

  3. 小Y的难题

    Font Size:Aa Aa Aa Description 近期小Y迷上了数学,总是在思考各种数学问题.有一天,他不小心把墨水洒在草稿纸上.他如今能看到的是"2?3?1?4"(? ...

  4. D - 小Y上学记——要迟到了!

    D - 小Y上学记——要迟到了! Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) ...

  5. C - 小Y上学记——认识新同学

    C - 小Y上学记——认识新同学 Time Limit: 4000/2000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) ...

  6. B - 小Y上学记——小Y的玩偶

    B - 小Y上学记——小Y的玩偶 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) ...

  7. A - 小Y上学记——修学分

    A - 小Y上学记——修学分 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) S ...

  8. 计蒜客NOIP模拟赛4 D1T1 小X的质数

    小 X 是一位热爱数学的男孩子,在茫茫的数字中,他对质数更有一种独特的情感.小 X 认为,质数是一切自然数起源的地方. 在小 X 的认知里,质数是除了本身和 1以外,没有其他因数的数字. 但由于小 X ...

  9. 【luogu P4007 清华集训2017】小Y和恐怖奴隶主

    题目背景 “A fight? Count me in!” 要打架了,算我一个. “Everyone, get in here!” 所有人,都过来! 题目描述 小 Y 是一个喜欢玩游戏的 OIer.一天 ...

随机推荐

  1. UVa 12342 Tax Calculator (水题,纳税)

    今天在uva看到一个水题,分享一下. 题意:制定纳税的总额,有几个要求,如果第一个180000,不纳,下一个300000,纳10%,再一个400000,纳15%,再一个300000,纳20%,以后的纳 ...

  2. Discuz核心函数的解析

    dz采用的是多入口的方式,在每个入口函数你能看到引用,启动核心类的语句(其余省略),如下: require './source/class/class_core.php'; C::app()-> ...

  3. JSTL 引入

    首先要明白jstl有如下版本:  jstl1.0的引入方式为: <taglib uri="http://java.sun.com/jstl/core" prefix=&quo ...

  4. Tango Java API常数

    Tango Java API Constants常数 Constant Field Values常数字段值 Contents com.google.* com.google.* com.google. ...

  5. Android dex分包方案和热补丁原理

    一.分包的原因: 当一个app的功能越来越复杂,代码量越来越多,也许有一天便会突然遇到下列现象: 1. 生成的apk在2.3以前的机器无法安装,提示INSTALL_FAILED_DEXOPT 2. 方 ...

  6. Java NIO学习-详细内容(二)

    五.Selector与SelectionKey Selector是SelectableChannel 对象的多路复用器,为什么使用Selector? 仅用单个线程来处理多个Channels的好处是,只 ...

  7. MVC4 View 的呈现

    一 ActionResult: 1. EmptyResult: Action方法返回的ActionResult对象被ActionInvoker 调用以实现对当前请求的响应,不论Action方法是否具有 ...

  8. Apache Shiro去掉URL中的JSESSIONID

    如果你的shiro版本在1.3.2版本以上这个BUG已经解决只需要在配置文件如下配置中添加红色部分 <!-- 会话管理器 --> <bean id="sessionMana ...

  9. [Erlang01] 使用catch与try catch避免嵌套nest_case

    catch 如此好用,为什么官方还是推荐用try catch? 1. catch 的用法非常简单: catch case do_check(Test) of {ok,Result} -> do_ ...

  10. 免费的API

    https://www.jianshu.com/p/e6f072839282 目前接口列表: 新实时段子 https://api.apiopen.top/getJoke?page=1&coun ...