描述

形如2^P-1的素数称为麦森数,这时P一定也是个素数。但反过来不一定,即如果P是个素数,2^P-1不一定也是素数。到1998年底,人们已找到了37个麦森数。最大的一个是P=3021377,它有909526位。麦森数有许多重要应用,它与完全数密切相关。

任务:从文件中输入P(1000<P<3100000),计算2^P-1的位数和最后500位数字(用十进制高精度数表示)

输入

文件中只包含一个整数P(1000<P<3100000)

输出

第一行:十进制高精度数2^P-1的位数。

第2-11行:十进制高精度数2^P-1的最后500位数字。(一行输出,不足500位时高位补0)

不必验证2^P-1与P是否为素数。

样例输入

1279

样例输出

386
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010407932194664399081925240327364085538615262247266704805319112350403608059673360298012239441732324184842421613954281007791383566248323464908139906605677320762924129509389220345773183349661583550472959420547689811211693677147548478866962501384438260291732348885311160828538416585028255604666224831890918801847068222203140521026698435488732958028878050869736186900714720710555703168729087

题意

先输出十进制高精度数2^P-1的位数再输出最后500位

题解

这里求位数我推了好久,其实求位数有个公式:log10(a)*p+1,表示a^p的位数

这里-1不影响总位数,因为2的倍数末尾只可能是2,4,6,8

算500位采用快速幂的思想:2^5==(2^2)^2*2  其中2^2==(2^1)^2

然后模拟一下乘2和平方即可,注意算平方的时候不能越界

代码

 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<string.h>
 4 int a[505];
 5 void digui(int x){//快速幂思想
 6     if(x/2!=1)
 7         digui(x/2);
 8     pifang();
 9     if(x%2==1)
10         cheng();
11 }
12 void cheng(){//乘2
13     int i;
14     for(i=500;i>=1;i--)
15         a[i]*=2;
16     for(i=500;i>=1;i--){
17         if(a[i]>=10){
18             a[i-1]+=a[i]/10;
19             a[i]%=10;
20         }
21     }
22 }
23 void pifang(){//平方
24     int i,j,p[505];
25     memset(p,0,sizeof(p));
26     for(i=500;i>=1;i--)
27         for(j=500;j>=1;j--)
28             if(i+j-500>=1)//注意这里不能越界
29                 p[i+j-500]+=a[i]*a[j];
30     for(i=500;i>=1;i--){
31         if(p[i]>=10){
32             p[i-1]+=p[i]/10;
33             p[i]%=10;
34         }
35     }
36     for(i=1;i<=500;i++)
37     a[i]=p[i];
38 }
39
40 int main(){
41     int i,p;
42     memset(a,0,sizeof(a));
43     scanf("%d",&p);
44     printf("%d\n",(int)(p*log10(2))+1);//直接套公式
45     a[500]=2;
46     digui(p);
47     a[500]--;
48     for(i=1;i<=500;i++)
49         printf("%d",a[i]);
50     puts("");
51     return 0;
52 }

转载于:https://www.cnblogs.com/taozi1115402474/p/8371574.html

TZOJ 4839 麦森数(模拟快速幂)相关推荐

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

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

  2. 洛谷oj P1045麦森数 高精度快速幂取模及位数求法

    题目链接:戳我戳我 我们知道,  的最后一位必定不是0, 则  的位数与  相等. 那么如何来求  的位数呢? 为了不失一般性, 在此直接讨论任意数  的位数: 对于任意大于等于0的实数k, 有  的 ...

  3. (快速幂算法+高精度)洛谷P1045 麦森数

    前言   故事的最后,让我们以一道十分经典的题目--<麦森数>来结尾.接受现实吧,总会有我们没准备过的高精度运算出现.我们固然可以提前把高精度的快速幂模板也准备好,但是总会有百密一疏的时候 ...

  4. [蓝桥杯][算法训练VIP]麦森数(Java大数+快速幂)

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

  5. 【codevs1087NOIP2003】麦森数,高精度+对数+快速幂

    麦森数 2003年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 形如2P-1的素数称为麦森数,这时P ...

  6. Codevs_P1087 麦森数(快速幂+分治)

    麦森数(Mason.cpp) [问题描述]形如2P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2P-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的 ...

  7. 蓝桥杯 ALGO-26 算法训练 麦森数

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

  8. 【9704】【9109】麦森数

    Time Limit: 3 second Memory Limit: 2 MB [问题描述] 形如2p-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2p-1不一定也是素 ...

  9. 高精度:麦森数*(洛谷P1045)

    P1045 [NOIP2003 普及组] 麦森数 解析 看似只是正常的一个高精 然而 暗藏杀机 一开始随手那么一写 ... (即使用了快速幂)时间复杂度过于感人 后来我们发现: 第一问位数的计算不必真 ...

  10. 信息学奥赛一本通 1925:【03NOIP普及组】麦森数 | OpenJudge NOI 4.4 1708:麦森数 | 洛谷 P1045 [NOIP2003 普及组] 麦森数

    [题目链接] ybt 1925:[03NOIP普及组]麦森数 OpenJudge NOI 4.4 1708:麦森数 洛谷 P1045 [NOIP2003 普及组] 麦森数 [题目考点] 1. 高精度 ...

最新文章

  1. htmlparser 获取某a标签地址_HTML常用标签
  2. android mp4流格式,将RTSP流保存到android中的mp4文件
  3. 二本本科生连发10篇SCI被喷“灌水严重”?原来是因为......
  4. Go微服务报错protoc-gen-go: unable to determine Go import path for
  5. 中石油训练赛 - Fermat‘s Optimization Problem(Java高精度运算+二分)
  6. 《Spring3.0就这么简单》
  7. Elasticsearch Reference [6.7] » Modules » Network Settings
  8. 文件后缀_电脑文件名的后缀即扩展名的显示和隐藏方法
  9. 【Vegas原创】imp/exp导入导出数据
  10. 从Android应用程序访问Internet需要什么权限?
  11. 个人空间html5主页面,2.HTML 教程- (HTML5 简介)
  12. BZOJ1001 狼抓兔子(网络流转最短路:对偶图)
  13. pycharm看php文件是乱码,Jetbrains-PhpStorm2019.2中文乱码问题
  14. 精益创业实战 - 第3章 制作自己的精益画布
  15. oracle日期型to_char,Oracle 日期函数to_char
  16. matlab 函数教程,MATLAB函数 - Matlab教程
  17. 移动端可以查看的设计APP,推荐给大家
  18. 一本好书,若干能源大数据分析论文分享
  19. EntityComponentSystemSamples学习笔记
  20. 制作一个电影推荐系统的案例

热门文章

  1. 华为ARP代理的三种方式
  2. Redis详解(五)——Redis多实例
  3. EVN双归组网环路问题解决
  4. React-flux杂记
  5. 快捷切换hosts的小工具:SwitchHosts!
  6. 关于JS的面向对象总结
  7. 20170317起mvc功能学习
  8. 金立S6:因“耀”开启金属手机2.0时代
  9. 嵌入在网页上Flash媒体播放器(1)
  10. zabbix企业应用之windows系统安装omsa硬件监控