题目

这个题在noiOJ上是分治专题,这个题包括了很多,求位数,高精度乘,快速幂。

那么单独把这个高精度拿出来做一个自定义函数即可

一、求位数

  显而易见,既然是2进制的就是log2X,是10进制就是lgX(值得注意的是,在计算机语言当中lg就是loge)。

二、快速幂

  还是老套路,先二进制拆分,用1248的那个来看,把这些都乘起来,最后和高精度结合,下面就是部分代码

while(P)
  { ) mul(ans,tmp); mul(tmp,tmp); P>>=; }
;i<=;++i)
        ;j<=;++j)
            c[i+j-]+=(a[i]*b[j]);
    ;i<=;++i)
  { c[i+]+=c[i]/; c[i]%=; }
}

这里的数组c只是一个临时答案,最后会把c复制给ans。

高精度乘很好理解


_______________*

_______________+

_______________+

这就是高精度乘法的思路,那么也没什么难点,不用去除前导0。

下面上答案

 #include <cstdio>
 #include <cmath>
 #include <cstring>
 using namespace std;
 int P;
 ],tmp[],c[];
 void mul(long long a[],long long b[],int f){
     memset(c,,sizeof(c));
     ;i<=;++i)
         ;j<=;++j)
             c[i+j-]+=(a[i]*b[j]);
     ;i<=;++i){
         c[i+]+=c[i]/;
         c[i]%=;
     }
     if(f) memcpy(tmp,c,sizeof(c));
     else memcpy(ans,c,sizeof(c));
 }
 int main(){
     scanf("%d",&P);

     printf()))+);
     ans[]=; tmp[]=;
     while(P){
         ) mul(ans,tmp,);
         mul(tmp,tmp,);
         P>>=;
     }
     ]) --ans[];
     ;i>=;--i){
         )) printf("\n");
         printf("%lld",ans[i]);
     }
     ;
 }

  

还有188天初赛, 还有216天复赛。

那是我愿意付诸一生的人,现在却没法拥有。

[codevs]1087麦森数的更多相关文章

  1. NOIP200304麦森数

    试题描述 形如2P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2P-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377,它有9 ...

  2. 【转】[NOIP2003普及组]麦森数

    来源:http://vivid.name/tech/mason.html 不得不纪念一下这道题,因为我今天一整天的时间都花到这道题上了.因为这道题,我学会了快速幂,学会了高精度乘高精度,学会了静态查错 ...

  3. vijosP1223麦森数

    vijosP1223麦森数 链接:https://vijos.org/p/1223 [思路] 快速幂+高精乘. 计算2^p-1可以快速幂的方法在O(logn)的时间内出解,限于数据范围我们需要用到高精 ...

  4. 【高精度乘法】NOIP2003麦森数

    题目描述 形如2^{P}-12P−1的素数称为麦森数,这时PP一定也是个素数.但反过来不一定,即如果PP是个素数,2^{P}-12P−1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的 ...

  5. 洛谷试炼场-简单数学问题-P1045 麦森数-高精度快速幂

    洛谷试炼场-简单数学问题 B--P1045 麦森数 Description 形如2^P−1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果PP是个素数,2^P-1 不一定也是素数.到19 ...

  6. TZOJ 4839 麦森数(模拟快速幂)

    描述 形如2^P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2^P-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377,它有9 ...

  7. 洛谷 P1045 麦森数

    题目描述 形如2^{P}-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2^{P}-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=30213 ...

  8. [NOIP2003普及组]麦森数(快速幂+高精度)

    [NOIP2003普及组]麦森数(快速幂+高精度) Description 形如2^P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2^P-1不一定也是素数.到1998 ...

  9. 洛谷P1045 麦森数

    题目描述 形如2^{P}-12 ​P ​​ −1的素数称为麦森数,这时PP一定也是个素数.但反过来不一定,即如果PP是个素数,2^{P}-12 ​P ​​ −1不一定也是素数.到1998年底,人们已找 ...

随机推荐

  1. 通讯录--(适配iOS7/8/9)

    导入库#import <AddressBook/AddressBook.h> #import <AddressBookUI/AddressBookUI.h> #pragma m ...

  2. 485. Max Consecutive Ones

    题目 Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: ...

  3. How to set up Tensorflow inception-v3 model on Windows

    There is Inception-v3 model python implementation on GitHub at: https://github.com/tensorflow/models ...

  4. Struts 基本概念,优点及不同版本之间的关系

    strutx 1.x struts 是 apache 基金会的一个开源项目. struts 是一套实现 MVC的框架. MVC = 程序分层设计的思想 = Model(数据访问层1) / View(视 ...

  5. js应用之实现图片切换效果

    数组的操作与应用 数组的定义 var 数组名=new Array(); //创建空数组 var 数组名=new Array(size);//创建指定数组长度的数组 var 数组名=new Array( ...

  6. cuda线程/线程块索引小结

    内建变量: threadIdx(.x/.y/.z代表几维索引):线程所在block中各个维度上的线程号 blockIdx(.x/.y/.z代表几维索引):块所在grid中各个维度上的块号 blockD ...

  7. Tcl与Design Compiler (三)——DC综合的流程

    本文属于原创手打(有参考文献),如果有错,欢迎留言更正:此外,转载请标明出处 http://www.cnblogs.com/IClearner/  ,作者:IC_learner 1.基本流程概述 首先 ...

  8. Linux之lsof命令

    lsof是一个列出当前系统中所有打开文件的工具 lsof  filename   显示打开指定文件的所有进程 lsof  -c  string  显示COMMAND中包含指定字符的进程的所有打开文件 ...

  9. 一次安装rpcbind失败引发的思考

    问题: yum install rpcbind -y 出现如下错误: Error -.el6.x86_64 error: %pre(rpcbind--.el6.x86_64) scriptlet fa ...

  10. Spring 框架原理

    [spring框架原理] Spring框架原理 [博主]高瑞林 [博客地址]http://www.cnblogs.com/grl214 写给读者的话 ------亲爱的读者感谢您对小编的支持,当我正值 ...