CodeChef November Challenge 2013 » Yet Another Cute Girl
来源:互联网 发布:淘宝买ipad哪家可靠 编辑:程序博客网 时间:2024/05/29 11:53
题目:Yet Another Cute Girl
Chef doesn't love math anymore. He loves Sasha. Sashen'ka is cute.
Chef goes on a date with her. Flowers are boring, while numbers are not. He knows that most of all this girl loves numbers, that's why he is going to bring ribbon with numbers L, L+1, L+2, ..., R written on it.
Sasha thinks that numbers with prime number of divisors are special. That's why she is going to kiss boy for each such number he will bring.
Now Chef wonder how many times he will be kissed by Sashen'ka ?
Input
The first line of the input contains an integer T denoting the number of test cases. The description of Ttest cases follows.
The first line of each test case contains two number L, R.
Output
For each test case, output a single line containing answer for corresponding test case.
Constraints
- 1 ≤ T ≤ 5
- 1 ≤ L ≤ R ≤ 1012
- 0 ≤ R-L ≤ 106
Example
Input:11 10Output:6
Explanation
Example case 1. Numbers 2,3,4,5,7,9 are special.
思路:就是求区间内素数的个数,再加上一个prime[i]^(prime[j]-1)的形式的个数
#include <cstdio>#include <iostream>#include <cstring>#include <cmath>#include <algorithm>#include <map>#include <vector>#include <set>using namespace std;#define maxn 1000100long long num[79000];bool prime[maxn];int n_prime=0;bool cnt[1000001];map<long long,int>m;vector<long long>v;long long l,r;void Prime(){ memset(prime,true,sizeof(prime)); prime[0]=prime[1]=0; for(int i=2;i<maxn;i++) if(prime[i]) { num[++n_prime]=i; for(int j=2*i;j<maxn;j+=i) prime[j]=0; } //cout<<n_prime<<":"<<num[n_prime]<<endl;}void make_prime(){ m.clear(); long long tmp; memset(cnt,true,sizeof(cnt)); for(int i=1;i<=n_prime;i++) { tmp=l/num[i]; while(tmp*num[i]<l||tmp<=1) tmp++; for(long long j=tmp*num[i];j<=r;j+=num[i]) { if(j>=l&&j<=r) cnt[j-l]=0; } } if(l==1) cnt[0]=0; for(long long i=0;i+l<=r;i++) if(cnt[i]&&i+l<=r&&i>=0) m[i+l]++;}long long Pow(long long a,long long b){ long long ans=1; while(b) { if(b&1) { b--; ans*=a; } else { b/=2; a*=a; } } return ans;}int main(){ Prime(); long long tmp; v.clear(); for(int i=1;i<n_prime && num[i]*num[i]<1e12;i++) { for(int j=2;j<n_prime;j++) { tmp=Pow(num[i],num[j]-1); if(tmp>1e12) break; v.push_back(tmp); } } sort(v.begin(),v.end()); int T; scanf("%d",&T); while(T--) { scanf("%lld%lld",&l,&r); make_prime(); printf("%d\n",m.size()+(upper_bound(v.begin(),v.end(),r)-lower_bound(v.begin(),v.end(),l))); } return 0;}
- CodeChef November Challenge 2013 » Yet Another Cute Girl
- CodeChef November Challenge 2013 题解
- codechef November Challenge 2014 .Chef and Churu
- Codechef November Challenge 2015 Simple Sum
- codechef November Challenge 2017解题报告
- 【codechef】Yet Another Problem On Strings (找最优解)
- CodeChef SEGSUMQ Yet Another SubSegment Sum Problem(思路来自他人)
- codechef December Challenge 2012
- codechef December Challenge 2012
- codechef December Challenge 2012
- codechef May challenge A
- codechef May challenge B
- codechef May challenge C
- CodeChef May Challenge 2014
- codechef July Challenge 2014
- codechef December Challenge 2014
- Codechef February Challenge坑
- CodeChef March Challenge 2015
- UVA 10616 Divisible Group Sums
- 隐性—显性知识转化技术
- 认识C/C++之字符串
- C指针原理(4)-AT&T汇编
- VS或VC调用matlab程序
- CodeChef November Challenge 2013 » Yet Another Cute Girl
- HDU 4055 Number String
- KEILC51编译问题ERROR L104: MULTIPLE PUBLIC DEFINITIONS重复定义
- OCP-1Z0-052-V8.02-98题
- java之反射机制
- 理解 bashrc 和 profile【转自wido.me】
- qsort 的用法讲述
- 用Thymeleaf替换JSP
- HDU 1556(线段树+dfs)