麦森数 2003年NOIP全国联赛普及组
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 黄金 Gold
题解
题目描述 Description
形如2P-1的素数称为麦森数,这时P一定也是个素数。但反过来不一定,即如果P是个素数,2P-1不一定也是素数。到1998年底,人们已找到了37个麦森数。最大的一个是P=3021377,它有909526位。麦森数有许多重要应用,它与完全数密切相关。

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

输入描述 Input Description
文件中只包含一个整数P(1000<P<3100000)

输出描述 Output Description
第一行:十进制高精度数2P-1的位数。
第2-11行:十进制高精度数2P-1的最后500位数字。(每行输出50位,共输出10行,不足500位时高位补0)
不必验证2P-1与P是否为素数。
样例输入 Sample Input
1279

样例输出 Sample Output
386

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000104079321946643990819252403273640855

38615262247266704805319112350403608059673360298012

23944173232418484242161395428100779138356624832346

49081399066056773207629241295093892203457731833496

61583550472959420547689811211693677147548478866962

50138443826029173234888531116082853841658502825560

46662248318909188018470682222031405210266984354887

32958028878050869736186900714720710555703168729087
写来前面:好久以前写的,今天发一下,不得不说过去的题目质量真高……
———————————————————————
———————————————————————
思路
同标题,注意判断位数时用到log函数,即2^p-1的位数等于p/log2(10)+1,证明如下:
对于2^p-1,它的位数等于2^p(因为2的正整数次幂个位只有2,4,8,6,则减1不影响位数),2^p的位数等于lg(2^p)取整后+1(这个可以自己写写看),则
log10(2^p)=log2(2^p)/log2(10)=p/log2(10);

当时的我还不会快速幂,所以用了一个比较卡数据的方法,用2^30,2^20,2^10,2分别进行高精乘单精,最后
过了……
代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#define maxn 1099511627776LL
using namespace std;
long long a[1000000];
int n;
void add(long long x)
{long long jw=0;for (int i=1;i<=min(a[0],501LL);i++){a[i]=x*a[i]+jw;jw=0;if (a[i]>=10)jw+=(a[i]/10),a[i]%=10;}if (jw>0) a[++a[0]]=jw;while (a[a[0]]>=10&&a[0]<=501) a[a[0]+1]=a[a[0]]/10,a[a[0]++]%=10;a[501]=0;a[0]=min(a[0],501LL);
}
main()
{a[1]=1;a[0]=1;scanf("%d",&n);for (int i=1;i<=n/40;i++)add(maxn);for (int i=1;i<=(n-(n/40)*40)/20;i++)add(1048576);for (int i=1;i<=(n-20*(n/20))/10;i++)add(1024);for (int i=1;i<=n-10*(n/10);i++)add(2);double k=log10(2);printf("%d",int(n*k+1));a[1]--;for (int i=500;i>=1;i--){if (i%50==0) printf("\n");printf("%d",a[i]);}
}

【codevs1087NOIP2003】麦森数,高精度+对数+快速幂相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. 【9704】【9109】麦森数

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

  9. 麦森数(洛谷-P1045)

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

最新文章

  1. laravel 发送带附件的邮件
  2. 当前不会命中断点.还没有为该文档加载任何符号解决
  3. 字符串的动态顺序结构(C/C++语言)
  4. gRPC学习记录(六)--客户端连接池
  5. [转载]Python量化交易平台开发教程系列0-引言
  6. 在PC上用模拟器搭建Windows Mobile仿真环境:Microsoft Device Emulator使用
  7. UP-DETR:收敛更快!精度更高!华南理工微信开源无监督预训练目标检测模型...
  8. Teamcenter(Enterprise 2007) Admin 手法之 -- 移除relation
  9. rm: cannot remove `xxx’: Operation not permitted问题的处理方案
  10. saspython知乎_SAS入门书籍有哪些值得推荐?
  11. CSS颜色代码,二进制颜色代码
  12. 2019年下半年软件设计师下午真题试题(案例分析)及答案
  13. 腾讯云短信服务php发送短信
  14. CICD概念 k8s DevOps
  15. 推广的euclid_问题引导的代数学: Euclid 空间 III
  16. python如何判断tcp异常断开_TCP socket如何判断连接断开
  17. 微信小程序:高德地图在小程序中的实践(含静态地图)
  18. python通过pyautogui库来控制鼠标和键盘
  19. VUE—下载安装并使用mint ui(图文详情)
  20. 当公路的规则与秩序,被昇腾AI时刻守护

热门文章

  1. gui界面如何和内核链接 python_专栏 | 除了内核程序,Abaqus还能这样做二次开发...
  2. td外边加div为啥不隐藏_过年炸油饼注意了,秘制配方比例教给你,柔软不吸油,放凉了不硬...
  3. Android笔记 对话框demo大全
  4. Android笔记 采用httpclient提交数据到服务器demo
  5. MATLAB中文显示乱码的问题如何解决
  6. java Stream 流
  7. IPython高级用法(一)定制命令别名及存储别名
  8. 如何清空一个数组内容
  9. 以太坊服务器是什么_OKEX区块链60讲 | 第33集:什么是以太坊?
  10. 微软的自动更新问题,导致svchost.exe占用cpu超过50%