neu 1694 Primorial vs LCM 数论
2016-05-13 00:23
441 查看
1694:PrimorialvsLCM
时间限制:4Sec内存限制:128MB[
题目描述
GivenN(2<=N<=10^14),whatisthequotientofLCM(1,2,3,....,N)dividedbymultipleofallprimesuptoN.Astheresultmightbetoobig,outputit'smoduloby1000000007.
Forexample,whenN=5,theresultisLCM(1,2,3,4,5)/(2*3*5)=60/30=2.
NotethatLCMstandsforLowestorLeastCommonMultiple.
输入
ThefirstlineoftheinputisT(T≤50000),thenTtestcasesfollowsinnextTlines.EachlinecontainsanintegerN(2≤N≤100000000000000or10^14).ThemeaningofNisgiveninthe
problemstatement.
输出
Foreachtestcaseprintalinein“Casex:S”formatwherexiscasenumberandSisthequotientmoduloby1000000007.
样例输入
10 2 3 4 5 6 7 8 9 10 1000
样例输出
Case1:1 Case2:1 Case3:2 Case4:2 Case5:2 Case6:2 Case7:4 Case8:12 Case9:12 Case10:744593350 思路:显然是求小于一个素数的n次方小于N的贡献为那个素数的n-1次方; 因为一次方是没用的,所以素数打表到sqrt(e14); 求出前缀积,二分查找位置; 注意超内存跟,得到贡献那里必须要double;
#include<bits/stdc++.h> usingnamespacestd; #definellunsignedlonglong #definemod1000000007 #defineinf100000000000005 #defineMAXN10000010 //#pragmacomment(linker,"/STACK:102400000,102400000") intscan() { intres=0,ch; while(!((ch=getchar())>='0'&&ch<='9')) { if(ch==EOF)return1<<30; } res=ch-'0'; while((ch=getchar())>='0'&&ch<='9') res=res*10+(ch-'0'); returnres; } vector<pair<ll,ll>>v; vector<ll>ans; llprime[MAXN],cnt; boolvis[MAXN]; voidPrime() { cnt=0; memset(vis,0,sizeof(vis)); v.push_back(make_pair(1LL,1LL)); for(lli=2;i<MAXN;i++) { if(!vis[i]) { prime[cnt++]=i; for(doublej=(double)i*i;j<inf;j*=i) v.push_back(make_pair((ll)j,i)); } for(llj=0;j<cnt&&i*prime[j]<MAXN;j++) { vis[i*prime[j]]=1; if(i%prime[j]==0) break; } } sort(v.begin(),v.end()); ans.push_back(1LL); for(inti=1;i<v.size();i++) ans.push_back((ans[i-1]*v[i].second)%mod); } intmain() { llx,y,z,i,t; Prime(); intT,cs=1; scanf("%d",&T); while(T--) { scanf("%llu",&x); llst=0; llen=v.size()-1; while(st<en) { llmid=(st+en)/2; if(v[mid].first>x) en=mid; else st=mid+1; } if(x>=v[st].first) printf("Case%d:%llu\n",cs++,ans[st]%mod); elseif(x>=v[st-1].first) printf("Case%d:%llu\n",cs++,ans[st-1]%mod); } return0; }
ViewCode
相关文章推荐
- POJ 1080 DP
- POJ 1080 DP
- 系统参数设计,即用户词典,把一些词组单独放一表中,系统启动即加载到Application中
- 安卓中进行基于Http协议的网络访问基础总结-1
- java8 lambda表达式
- 阿里巴巴常考面试题及汇总答案
- win7上的python脚本无法连接运行在virtualbox上的mongodb
- Android_仿ios状态栏一体化
- 计算使用线性探测、平方探测以及双散列插入的长随机序列所需要的冲突次数
- 一次位运算疑惑
- js中boolean类型的理解
- Jmeter连接Mysql和Mysql编码问题
- 指针二三事
- LinearLayout、RelativeLayout、FrameLayout居中显示
- Java中的时间日期处理
- 字符串函数strchr 、 strrchr 、strrstr的实现
- Android启动界面之ViewPager用法详解
- What is a nuclear reactor?(核反应堆是什么)
- ASP.NET中使用URLRewrite(1):优缺点和使用范围
- 1016-P专题三