目录标题

  • 题目描述
  • 解题思路
  • 代码

题目描述

形如2P-1的素数称为麦森数,这时P一定也是个素数。但反过来不一定,即如果P是个素数,2P-1不一定也是素数。到1998年底,人们已找到了37个麦森数。最大的一个是P=3021377,它有909526位。麦森数有许多重要应用,它与完全数密切相关。
  任务:从文件中输入P(1000<P<3100000),计算2P-1的位数和最后500位数字(用十进制高精度数表示)

输入
输入描述:
  文件中只包含一个整数P(1000<P<3100000)
输入样例:
1279

输出

输出描述:
  第一行:十进制高精度数2P-1的位数。
  第2-11行:十进制高精度数2P-1的最后500位数字。(每行输出50位,共输出10行,不足500位时高位补0)
  不必验证2P-1与P是否为素数。
输出样例:
386
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000104079321946643990819252403273640855
38615262247266704805319112350403608059673360298012
23944173232418484242161395428100779138356624832346
49081399066056773207629241295093892203457731833496
61583550472959420547689811211693677147548478866962
50138443826029173234888531116082853841658502825560
46662248318909188018470682222031405210266984354887
32958028878050869736186900714720710555703168729087

HINT:时间限制:1.0s 内存限制:256.0MB

解题思路

因为数字太大 所以选用BigInteger来存储数据,可以用m*Math.log10(2)+1方法来计算2的m次方。剩下的就是输出的问题了。可以通过BigInteger的pow方法来设置位数,若大于的话就可以直接输出,小于的话就需要先补上少于500的位数,之后再输出。

代码

import java.math.BigInteger;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int m=scanner.nextInt();BigInteger n1=new BigInteger("10");n1=n1.pow(501);//设置位数BigInteger n2=new BigInteger("1");BigInteger n=new BigInteger("2");n=n.modPow(BigInteger.valueOf(m),n1);//计算值n=n.subtract(n2);//减去1String n4=n.toString();//转换为字符串System.out.println((int)(m*Math.log10(2)+1));//输出位数if (n4.length()>500){//大于500时n4=n4.substring(n4.length()-500);//控制位数for (int j=0;j<10;j++){System.out.println(n4.substring(j*50,j*50+50));//输出}} else{for (int j=0,b=1;j<500-n4.length();j++){//小于500时System.out.print("0");//先输出补位0的数目if (b%50==0){System.out.println();}b++;}int p=(500-n4.length())%50;//计算还差多少到达50字符for (int k=0,a=p;k<n4.length();k++){System.out.print(n4.charAt(k));//输出if (k==49-p){System.out.println();//达到50位时换行a=0;//令a为0 重新计算}if (a!=0 && a%50==0){System.out.println();//每50字符换行}a++;}}}
}

Java 算法 麦森数相关推荐

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

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

  2. 蓝桥杯vip答案java_Java实现 蓝桥杯VIP 算法训练 麦森数

    算法训练 麦森数 时间限制:1.0s 内存限制:256.0MB 问题描述 形如2P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2P-1不一定也是素数.到1998年底, ...

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

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

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

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

  5. 【9704】【9109】麦森数

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

  6. [CODEVS 1087] 麦森数

    描述 计算2P-1的位数和最后500位数字 分析 有一个公式,2^p的位数是p*lg2以十为底 2 的对数. 证明 : 2p=10lg2p=10p∗lg2 2^p = 10^{lg2^p} = 10^ ...

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

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

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

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

  9. 麦森数(洛谷-P1045)

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

最新文章

  1. atomikos mysql,记一次 Atomikos 分布式事务的使用
  2. Android多媒体开发:照相机
  3. Golang + Goland环境配置 + Goland破解
  4. 微软Build 2017首日主角AI 同时发布.NET Core 2.0 Preview 1
  5. Android官方开发文档Training系列课程中文版:构建第一款安卓应用之工程创建
  6. c mysql 双主复制_mysql双主复制总结
  7. Python中re模块的常见方法
  8. delve应该安装到哪_消防水炮安装高度为多少米标准
  9. 列注释_机器学习 Pandas 08:进阶 前09题 ( 带答案、注释 )
  10. 我们常常怕打扰别人,而忽略要打个电话问候对方,
  11. [php基础]Mysql日期函数:日期时间格式转换函数详解
  12. Android Studio3.0,在原有项目中进行ndk配置
  13. vue安装vue-pdf(预览pdf)
  14. 深入百度蜘蛛IP段详解
  15. convexHull实现
  16. 构造函数创造对象--创建四大天王的对象
  17. Apple Pay正式入华:能否成支付宝与微信强敌
  18. IllegalArgumentException 异常时一个不易觉察的原因
  19. 计算机软件类杂志,软件技术类的核心期刊有哪些
  20. python爬虫反爬 css 知乎 专栏_python爬虫反反爬 | 像猫眼电影、大众点评等自定义 css 加密字体怎么破?...

热门文章

  1. java中多线程的创建方式一:
  2. initPlayer初始化过程(一)
  3. android gps 案例_GPS学习要点10
  4. 关于健康吗、核算检测等系统高并发问题的一些思考
  5. Redis的分片、预分片技术总结
  6. python中dtype什么意思_浅谈python 中的 type(), dtype(), astype()的区别
  7. torch的DataLoader 浅析
  8. iOS App 崩溃报告符号化,.ips崩溃报告文件分析
  9. 使用Visual Studio开发游戏——微软宣布与Unity、Unreal Engine和Cocos展开全新合作
  10. 更新一波,微信第三方开发平台授权流程