题目链接:https://www.luogu.org/problemnew/show/P1045

题意:给定p(1000<p<3100000),求2^p-1的位数和最后500位(若不足高位补零)。

思路:首先,2^p-1和2^p有相同的位数,因为2^p末位一定不为0。所以2^p-1的位数为log10(2^p)+1,即p*log10(2)+1。

   手写快速幂计算2^p,并对Mod=10^500取模,计算结果减一之后注意判断是否为负,若为负,则加上模数,之后将BigInteger转字符串输出即可。

代码:

import java.io.*;
import java.math.*;
import java.util.*; public class Main {
public static BigInteger qpow(BigInteger a,int b,BigInteger Mod)
{
BigInteger ans = BigInteger.ONE;
while(b!=0)
{
if((b&1)==1)
ans = ans.multiply(a).mod(Mod);
a = a.multiply(a).mod(Mod);
b >>= 1;
}
return ans;
}
public static void main(String[] args)
{
Scanner cin = new Scanner(System.in);
BigInteger two = BigInteger.valueOf(2);
int p = cin.nextInt();
BigInteger Mod=BigInteger.TEN.pow(500);
BigInteger tmp = qpow(two,p,Mod);
tmp = tmp.subtract(BigInteger.ONE);
if(tmp.compareTo(BigInteger.ZERO)<0)
tmp.add(Mod);
String s=tmp.toString();
int len=s.length();
int cnt=0;
System.out.println((int)(p*Math.log10(2)+1));
for(int i=1;i<=500-len;++i){
System.out.print('0');
cnt++;
if(cnt==50){
cnt=0;
System.out.println();
}
}
for(int i=0;i<len;++i){
System.out.print(s.charAt(i));
cnt++;
if(cnt==50){
cnt=0;
System.out.println();
}
}
}
}

最新文章

  1. angularjs自动化测试系列之jasmine
  2. commons-math使用
  3. js 小工具-- 按长度截取字符串
  4. 2.5 ListView
  5. 纯CSS画的基本图形(矩形、圆形、三角形、多边形、爱心、八卦
  6. FineUI第二天
  7. Vector3.Lerp 插值
  8. Java 基本数据类型 sizeof 功能【转】
  9. 数组排序-冒泡排序-选择排序-插入排序-希尔排序-快速排序-Java实现
  10. .net 创建属于自己的log类
  11. java String 两种不同的赋值 比较
  12. POJ 3449 Geometric Shapes (求正方形的另外两点)
  13. JavaWeb 后端 &lt;十一&gt; 之 DBUtils 框架 (基本使用 结果集 事务处理 对表读取)
  14. 前端笔记---塌陷top
  15. React框架 dva 和 mobx 的使用感受
  16. Django中Middleware中间件
  17. Synchronized的那些事
  18. BZOJ.2287.[POJ Challenge]消失之物(退背包)
  19. bootStrap中的ul导航2
  20. Adapter中用不了getWindowManager()

热门文章

  1. HGOI 20190828 题解
  2. Centos 7自定义屏幕分辨率
  3. 【一起学源码-微服务】Nexflix Eureka 源码二:EurekaServer启动之配置文件加载以及面向接口的配置项读取
  4. Java线程中的异常处理
  5. CLOB、BLOB , CLOB与BLOB的区别
  6. Zookeeper 安装及命令行操作
  7. onReachBottom 注意事项
  8. [net]tcp和udp&amp;socket
  9. 2018年第一记:EDM策略分享-EDM营销的策略分析
  10. 网络通信框架之retrofit