hdu2879素数筛选
来源:互联网 发布:守望先锋网络卡 编辑:程序博客网 时间:2024/06/05 12:40
#include <cstdio> //140MS7772K#include <cstring>#include <cmath>using namespace std;const int N=5000006; //允许的最大数组为2500*2500const int MAX=10000007;bool temp[N];int prim[700000]; // 10^7内的素数不超过700000int isprime(){ //可以返回小于MAX的素数个数 int t=0; prim[t++]=2; int kill=int(sqrt(1.0*MAX))+1; //换时间 for(int i=3;i<kill;i+=2){ if(!temp[i>>1]){ for(int j=i*i;j<MAX;j+=i<<1){ temp[j>>1]=1; } } } kill=MAX>>1; for(int i=1;i!=kill;++i){ if(!temp[i]){ prim[t++]=i<<1|1; } } return t;}__int64 mypow(int n,__int64 m){ __int64 x=2,r=1; while(n){ if(n&1) r=r*x%m; n>>=1; x=x*x%m; } return r;}int main(){ //printf("%d\n",isprime()); isprime(); int T,n; __int64 m; scanf("%d",&T); while(T--){ scanf("%d%I64d",&n,&m); int s=0,r=0; while(prim[s]<=n&&prim[s]!=0){ r+=n/prim[s++]; //不会超int } printf("%I64d\n",mypow(r,m)); } return 0;}
In the equation X^2≡X(mod N) where x∈[0,N-1], we define He[N] as the number of solutions.
And furthermore, define HeHe[N]=He[1]*……*He[N]Now here is the problem, write a program, output HeHe[N] modulo M for a given pair N, M.
显然He[N]表示满足N|x*(x-1)且x<N的非负解的个数。不妨设N=p1^a1*p2^a2*...*pr^ar.因为N|x*(x-1)等价于K*N=x(x-1),又x与(x-1)互素,x=k1*a ,x-1=k2*b 其中a*b=N,k1*k2=K,k1*a-k2*b=1有解当且仅当a,b互素、而且得到的解k1,k2是唯一的。只要a不一样,那么对于的x就不一样。而a有2^r中选择,所以He[N]=2^r.所以对于每个n关键在于求r.又HeHe[N]=He[1]*……*He[N]。所以要求hehe[N]只需求不大于N内的所有正整数有多少个素因子即可。
-------------上述代码拿到了当前最佳解答 ------ 0.肆玖
0 0
- hdu2879素数筛选
- 素数筛选
- 筛选素数
- 素数筛选
- 筛选素数
- 素数筛选
- 筛选素数
- 素数筛选
- 素数筛选
- 筛选素数
- 素数筛选
- 素数筛选
- 筛选素数
- 筛选素数
- 素数筛选
- 素数筛选
- 筛选素数
- 素数筛选
- 【交流】学习在你身上真的发生了吗?——桑新民教授
- Oracle在线索引重构
- 什么时候我们走向平台级,难道一定是资本的特权?
- hash简单入门
- 数据库并发控制
- hdu2879素数筛选
- python框架之django学习
- Flash3D技术-Stage3D介绍 Adobe出品
- 读王爽老师的汇编语言有感
- 第一周上机实践项目——日期结构体
- IT架构师_隽语集(Design Thinking_0001)
- ARM裸机开发-bootloader-代码搬移从SRAM到DRAM
- Windows 7下配置Lex和Yacc
- 基于Stage3D的2D游戏加速框架:Starling介绍