Codeforces 225E 梅森素数

注:梅森素数,数组表示的是2^n-1的n,指数。

#include <stdio.h>
#include <math.h>

const int maxn = 40;
const int MOD = 1e9+7;
typedef long long ll;

int a[45] = {2,3,5,7,13,17,19,31,61,89,107,127,521,607,1279,2203,2281,3217,4253,4423,9689,9941,11213,
             19937,21701,23209,44497,86243,110503,132049,216091,756839,859433,1257787,1398269,
               2976221,3021377,6972593,13466917,20996011};

int main(int argc, char const *argv[])
{
    int n;
    scanf("%d",&n);
    n--;
    int tmp = a[n];
    tmp--;

    ll ans = 1;
    for(int i=0;i<tmp;i++)
        ans = ans*2 %MOD;
    ans--;
    printf("%I64d\n", ans);

    return 0;
}
时间: 2024-10-08 11:33:49

Codeforces 225E 梅森素数的相关文章

codeforces 225E E. Unsolvable(梅森素数+数学)

题目链接: codeforces 225E 题目大意: 给出一个等式,z=[x2]+y+x?y,求另这个等式无解的z,从小到大排序,访问第i个. 题目分析: 首先为了简便计算先要通过分奇偶去掉向下取整符号,原式转换为如下形式: {z=k+y+2ky ,x=2kz=k+y+(2k+1)?y ,x=2k+1(1)(2) 对于(1)式我们采取如下推到过程进行推导: z=k+y+2ky,k>=0?2z+1=2k+2y+4ky+1?2z+1=(2k+1)?(2y+1)(3) 对于(2)式我们采取如下的推导

NEFU120 梅森素数【Lucas-Lehmer判定】

题目链接: http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=120 题目大意: 给一个数p,若Mp = 2^p - 1是梅森素数,则输出"yes",否则输出"no". 思路: 这道题p小于62.Mp就小于2^62-1.如果直接进行素数判别会比较慢,用筛法的话数据量 又会很大.所以这里用了Lucas-Lehmer判定法则. Lucas-Lehmer判定法则具体步骤: 如果要判定的整数位Mp =

梅森素数判定模板

对于一个素数a,2^a-1叫做梅森数. 如果2^a-1为素数则叫做梅森素数. 我们知道,如果a为合数,则2^a-1一定不是素数. 2^a-1为素数,则a必为素数. 如果a为素数,则2^a-1可为素数,也可为合数. unsigned long long multi_pow(unsigned long long x,unsigned long long x1,unsigned long long mod) { unsigned long long sum=0; while(x1) { if(x1&1

梅森素数

定理:如果m是一个正整数,且2^m-1是一个素数,则m比是一个素数. 定义:如果m是一个正整数,且是素数而且=2^m-1称作第m个梅森数,若=2^m-1是一个素数,那么就称它是一个梅森素数. 判定方法:lucas-lehmer判定法 设p是一个素数,第p个个梅森数,r[1]=4,对于k>=2,利用 r[k]=r[k-1]^1-2(mod )    0=<r[k]< 可以得到r的序列,则有是素数,当且仅当r[p-1]=0(mod ). lucas-lehmer判定法模版: bool luc

NEFU 120 梅森素数(梅森数素数判定--Lucas-Lehmer测试判定)

梅森素数 Problem : 120 Time Limit : 1000ms Memory Limit : 65536K description 由于梅森学识渊博,才华横溢,为人热情以及最早系统而深入地研究2p-1 型的数(其中p为素数),为了纪念他,数学界就把这种数称为"梅森数":并以Mp 记之(其中M为梅森姓名的首字母),即Mp=2p-1 .如果梅森数为素数,则称之为"梅森素数". 比如p=2,3,5,7时,Mp都是素数,但211-1 不是素数 .现在请你求出前

Sicily-1009 梅森素数

一.梅森素数 素数有无穷多个,却只有极少量的素数能表示成2p-1(p为素数)的形式.在不大于257的素数中,当p=2.3.5.7.13.17.19.31.67.127.257时,2p-1是素数,其它都是合数.前面的7个数(即2.3.5.7.13.17.19)已被前人所证实,而后面的4个数(即31.67.127.257)则是梅森自己的推断.2300多年来,人类仅发现48个梅森素数. 指数为11, 23, 29, 37, 41, 43, 47, 53, 59的时候是合数. 二.过程 给出2-64里面

uva 1323 - Vivian&#39;s Problem(梅森素数)

题目链接:uva 1323 - Vivian's Problem 题目大意:给定N个数,然后为每个数添加一个幂ei,最后N项垒乘的结果为M,要是得M的所有因子的和可以写成2x,求x的最大值,如果没有条件满足,输出NO 解题思路:若一个数可以写成若干个不同的梅森素数的乘积,那么这个数的所以因子和可以写成2x. 232?1的范围内只有8个梅森素数,所以可以用状压处理. 梅森素数即为2^i-1形式的素数 /********************** * 梅森素数,(2^k) - 1 * * 一个数若

数论&#183;梅森素数与完全数

梅森数:$M_p=2^p-1$, $p$为素数. 性质:若$M_p$为素数,则$p$为素数. 完全数:若一个数$N$等与其所有非自身的约数之和,那么这个数就是完全数. 性质:若$M_p$为素数,那么$M_p2^{p-1}=\frac{M_p(M_p+1)}{2}$为完全数. 性质:一个数的约数之和为$2$的幂次当且仅当它能被分解为不同梅森素数的乘积.

素数 专题

素数性质总结: 小于x的素数个数(随着x逐渐增大),与x/lnx近似: 素数测试方法,诶拉托色尼筛法:如果n是一个合数,那么n一定有一个不超过sqrt(n)的素因子:6N±1法:对于任何一个自然数,都可以表示为如下形式之一:6N,6N+1,6N+2,6N+3,6N+4,6N+5(N=0,1,2,3...)显然,当N>=1时,只有形如6N+1,6N+5的自然数有可能是素数(代码后面贴上) n!的素因子分解中的素数p的幂为 n/p+n/p2+n/p3+...... 梅森素数:如果m是一个正整数,且2