题意大概就是让你求一下[L,R]中的约数个数是素数的数的个数。

其中1<=L<=R<=1e12,R-L<=1e6.

然后我写了两种做法,第一种是可以直接搞出来L-R的约数个数,然后直接统计一下就好了。

这个的复杂度大致是 O((R-L) * log(R-L))

第二种就是需要先发现满足条件的数必须只能是一个质数的一个质数-1次方,所以直接筛。

这个的复杂度大致是 O((R-L) * 一个小于log的可以看成常数的东西)

最后需要注意一下1是不合法的,我这两种做法一开始都把1算进来了2333

code1:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1000000;
int zs[maxn/2],t=0,T,ans;
bool v[maxn+5];
int d[maxn+5],derta;
ll l,r,lef[maxn+5]; inline void init(){
for(int i=2;i<=maxn;i++){
if(!v[i]) zs[++t]=i;
for(int j=1,u;j<=t&&(u=zs[j]*i)<=maxn;j++){
v[u]=1;
if(!(i%zs[j])) break;
}
}
} inline void solve(){
scanf("%lld%lld",&l,&r),derta=r-l;
fill(d,d+derta+1,1),ans=0;
for(int i=0;i<=derta;i++) lef[i]=i+(ll)l; for(int i=1;i<=t&&zs[i]*(ll)zs[i]<=r;i++)
for(int j=(l-1)/zs[i]*(ll)zs[i]+(ll)zs[i]-l,now;j<=derta;j+=zs[i]){
now=1;
while(!(lef[j]%zs[i])) lef[j]/=zs[i],now++;
d[j]*=now;
}
for(int i=0;i<=derta;i++){
if(lef[i]!=1) d[i]*=2;
if(!v[d[i]]) ans++;
} if(l==1) ans--;
printf("%d\n",ans);
} int main(){
init();
scanf("%d",&T);
while(T--) solve();
return 0;
}

code2:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1000000;
int zs[maxn/2],t=0,T,ans,derta;
bool v[maxn+5],vis[maxn+5];
ll l,r; inline void init(){
for(int i=2;i<=maxn;i++){
if(!v[i]) zs[++t]=i;
for(int j=1,u;j<=t&&(u=zs[j]*i)<=maxn;j++){
v[u]=1;
if(!(i%zs[j])) break;
}
}
} inline void solve(){
scanf("%lld%lld",&l,&r),derta=r-l;
memset(vis,0,sizeof(vis)),ans=0;
for(int i=1;i<=t&&zs[i]*(ll)zs[i]<=r;i++){
for(ll j=zs[i],u=2;j<=r;j*=(ll)zs[i],u++) if(!v[u]&&j>=l) ans++;
for(int j=r/zs[i]*zs[i]-l;j>=0;j-=zs[i]) vis[j]=1;
}
for(int i=0;i<=derta;i++) if(!vis[i]) ans++;
if(l==1) ans--;
printf("%d\n",ans);
} int main(){
init();
scanf("%d",&T);
while(T--) solve();
return 0;
}

Codechef Yet another cute girl的更多相关文章

  1. CodeChef November Challenge 2013 部分题解

    http://www.codechef.com/NOV13 还在比...我先放一部分题解吧... Uncle Johny 排序一遍 struct node{ int val; int pos; }a[ ...

  2. 【BZOJ-3514】Codechef MARCH14 GERALD07加强版 LinkCutTree + 主席树

    3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 1288  Solved: 490 ...

  3. 【BZOJ4260】 Codechef REBXOR 可持久化Trie

    看到异或就去想前缀和(⊙o⊙) 这个就是正反做一遍最大异或和更新答案 最大异或就是很经典的可持久化Trie,从高到低贪心 WA: val&(1<<(base-1))得到的并不直接是 ...

  4. CUTE FTP 控制连接已关闭

    使用Cute FTP连接FTP站点时,出现上述错误,在另外一台电脑上却可以正常连接. 原因:FTP服务器IP访问规则的限制 解决方法:在ServerU 服务器中进入服务器详细信息配置界面,在IP访问规 ...

  5. 越狱Season 1-Episode 4: Cute Poison

    Season 1, Episode 4: Cute Poison [Previously on Prison Break] previously: 以前地 前情提要 -Burrows: I didn' ...

  6. codechef 两题

    前面做了这场比赛,感觉题目不错,放上来. A题目:对于数组A[],求A[U]&A[V]的最大值,因为数据弱,很多人直接排序再俩俩比较就过了. 其实这道题类似百度之星资格赛第三题XOR SUM, ...

  7. codechef January Challenge 2014 Sereja and Graph

    题目链接:http://www.codechef.com/JAN14/problems/SEAGRP [题意] 给n个点,m条边的无向图,判断是否有一种删边方案使得每个点的度恰好为1. [分析] 从结 ...

  8. BZOJ3509: [CodeChef] COUNTARI

    3509: [CodeChef] COUNTARI Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 339  Solved: 85[Submit][St ...

  9. CodeChef CBAL

    题面: https://www.codechef.com/problems/CBAL 题解: 可以发现,我们关心的仅仅是每个字符出现次数的奇偶性,而且字符集大小仅有 26, 所以我们状态压缩,记 a[ ...

随机推荐

  1. PAT (Basic Level) Practise (中文)-1032. 挖掘机技术哪家强(20)

    PAT (Basic Level) Practise (中文)-1032. 挖掘机技术哪家强(20) http://www.patest.cn/contests/pat-b-practise/1032 ...

  2. Bootstrap历练实例:危险样式按钮

    <!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...

  3. javase(6)_异常

    一.异常的概念 1.java异常是Java提供的用于处理程序中错误的一种机制. 2.所谓错误是程序在运行过程中发生的一些异常事件(如:除0,数组下标越界,文件不存在等). 3.Java程序的执行过程中 ...

  4. Fortran学习笔记4(循环语句)

    Fortran学习笔记4 Fortran学习笔记4 逻辑运算 循环 Do语句 Do-While循环 循环控制 循环应用实例 逻辑运算 if命令需要和逻辑运算表达式搭配才能起到很好的效果.下面分别列出F ...

  5. mysql:10道mysql查询语句面试题

    表结构 学生表student(id,name) 课程表course(id,name) 学生课程表student_course(sid,cid,score) 创建表的sql代码 ```sql creat ...

  6. python基础——11(模块初识)

    一.函数回调 # 提前写出函数的调用,再去考虑函数体的实现 # 怎么样提前写出函数的调用:在另一个函数中写出函数的调用 # 再去考虑函数体的实现:根据实际的需求 # 自定义一个sleep def my ...

  7. struts向网页输出图片验证码

    前言:今天做个功能需要展示图片到页面,并不是下载,在网上搜了老半天,大部分都是下载,有的话也是只能在IE下进行输出,其它浏览器就都是下载了. Action代码: public String proce ...

  8. javamail腾讯企业邮箱发送邮件

    此代码用的jar文件:mail.jar(1.4.5版本); 如果jdk用的是1.8版本会出现SSL错误:这个问题是jdk导致的,jdk1.8里面有一个jce的包,安全性机制导致的访问https会报错, ...

  9. Matplotlib绘图属性(1)

    [matplotlib颜色.形状.线型等详细配置方法] #1.颜色(三种方法)-color 八种内置颜色及其缩写: b:blue <蓝色> c:cyan <青色> g:gree ...

  10. hdu2051

    二进制转换 #include <stdio.h> void change(int n){ ]; ; while(n){ num[cnt]=n%; n/=; cnt++; } cnt--; ...