目录

一.题目引出

二.BigInteger了解

1.赋值

2.运算:

3.对比

4.转换进制

3.输出

三.解答


一.题目引出

你一定听说过这个故事。国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第 11 个棋盘格放 11 粒麦子,在第 22 个棋盘格放 22 粒麦子,在第 33 个棋盘格放 44 粒麦子,在第 44 个棋盘格放 88 粒麦子,......后一格的数字是前一格的两倍,直到放完所有棋盘格(国际象棋共有 6464 格)。

国王以为他只是想要一袋麦子而已,哈哈大笑。

当时的条件下无法准确计算,但估算结果令人吃惊:即使全世界都铺满麦子也不够用!

请你借助计算机准确地计算,到底需要多少粒麦子。

思考:

如果这题用java写的话,我们知道,java最大的基本数据类型为long类型,而由粗略计算可知不满足条件,至少为unsigned long long的数据类型才可以满足条件,用c语言是可以写出来的,但是用java基本数据类型是无法写出来的

但是我们知道JAVA里面有一个类为BigInteger类可以满足:

java.math包的Biglnteger可以表示不可变的任意精度的整数。BigInteger提供所有Java的基本整数操作符的对应物,并提供java.lang.Math的所有相关方法。另外,Biglnteger 还提供以下运算:模算术、GCD计算、质数测试、素数生成、位操作以及一些其他操作。

二.BigInteger了解

1.赋值

BigInteger提供两种赋值方法

BigInteger a=new BigInteger("15");   默认为10进制形式转换为BigInteger

System.out.println(new BigInteger("15"));//15

BigInteger b=BigInteger.valueOf(1);   为long类型的数字,为10进制

System.out.println(BigInteger.valueOf(15));//15

BigInteger c=new BigInteger("1",int radix);填一个进制,相当于Integer.parseInt(String s,int radix)

将一个radix进制的数转换为BigInteger,也就是Integer数存入

System.out.println(new BigInteger("1001",2));  //9
System.out.println(new BigInteger("AA",16));   //170

2.运算:

①a. add(b);

System.out.println(BigInteger.valueOf(15).add(BigInteger.valueOf(15)));  //30

②subtract(); 相减

System.out.println(BigInteger.valueOf(15).subtract(BigInteger.valueOf(10))); //5

③multiply(); 相乘

System.out.println(BigInteger.valueOf(2).multiply(BigInteger.valueOf(10)));//20

④divide(); 相除取整

System.out.println(BigInteger.valueOf(20).divide(BigInteger.valueOf(10)));  //2

⑤remainder(); 取余

System.out.println(BigInteger.valueOf(11).remainder(BigInteger.valueOf(6)));  //5

⑥pow(); a.pow(b)=a^b         要注意b为int类型

System.out.println(BigInteger.valueOf(2).pow(5));  //32

⑦gcd(); 最大公约数

System.out.println(BigInteger.valueOf(2).gcd(BigInteger.valueOf(10)));  //2

⑧abs(); 绝对值

System.out.println(BigInteger.valueOf(-10).abs());   //10

⑨negate(); 取反数

System.out.println(BigInteger.valueOf(10).negate());  //-10

⑩mod(); a.mod(b)=a%b=a.remainder(b);

3.对比

两个bigInteget不能直接比较大小,但是可以判断是否相等

比如a==b,返回boolean(true or false)

int compare = a.compareTo(b);;  如果a>b,就返回1,相等返回0,a<b返回-1

BigInteger max = a.max(b);  返回a和b中较大的那个值

4.转换进制

a.toString(int radix),将BigInteger的数转换为radix进制的数,最后的结果为字符串

如:System.out.println(new BigInteger("15").toString(2));//1111

3.输出

由于BigInteger重写了toString方法,所以可以直接输出

System.out.println(a);

三.解答

了解了之后我们便可以根据BigInteger写出这一题的结果

import java.util.Scanner;
import java.math.BigInteger;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此输入您的代码...BigInteger count= BigInteger.valueOf(0);BigInteger x= BigInteger.valueOf(1);BigInteger a= BigInteger.valueOf(2);for(int i=0;i<64;i++){count=count.add(x);x=x.multiply(a);}System.out.println(count);scan.close();}
}

每日一题:由棋盘放麦子引出Java的BigInteger相关推荐

  1. 蓝桥杯真题练习-棋盘放麦子

    蓝桥杯真题练习-棋盘放麦子 ## 填空题 2012 省赛 题目地址 题目概述 就是说有一个64个格子的棋盘,第一个格子放一粒麦子,第二个两粒,第三个四粒,第四个八粒,依次类推,最终需要多少麦子. 思路 ...

  2. 蓝桥云算法题之棋盘放麦子——Python满分解答

    棋盘放麦子 题目描述 运行限制 解题思路 代码实现 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 你一定听说过这个故事.国王对发明国际象棋的大臣很佩服,问他要什么 ...

  3. LQ0262 棋盘放麦子【大数+亿进制】

    题目来源:蓝桥杯2012初赛 Java C组C题 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 你一定听说过这个故事.国王对发明国际象棋的大臣很佩服,问他要什么报 ...

  4. 2020省赛->棋盘放麦子

    棋盘放麦子 (354) (1) 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 你一定听说过这个故事.国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第 ...

  5. 【蓝桥杯Java】棋盘放麦子

    目录 题目描述 解题思路 BigInteger 类常用方法 解题代码 题目描述 你一定听说过这个故事.国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第 11 个棋盘格放 11 粒麦子,在 ...

  6. 算法题练习:棋盘放麦子

    问题描述 国际象棋共有 64格,请在第 1 个棋盘格放 1 粒麦子,在第 2 个棋盘格放 2 粒麦子,在第 3 个棋盘格放 4 粒麦子,在第 4个棋盘格放 8 粒麦子,-后一格的数字是前一格的两倍,直 ...

  7. 棋盘放麦子(c++版本)

    题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 你一定听说过这个故事.国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第 11 个棋盘格放 11 粒麦子 ...

  8. Python: 棋盘放麦子

    题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 你一定听说过这个故事.国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第 1 个棋盘格放 1 粒麦子,在 ...

  9. 蓝桥杯 棋盘放麦子<最简单写法>

    题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 你一定听说过这个故事.国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第 11 个棋盘格放 11 粒麦子 ...

最新文章

  1. 陈春花:管理到底是什么?
  2. ​Google 鼓励的 13 条代码审查标准,建议收藏!
  3. NanoPi NEO Air使用十五:使用V4L2驱动USB摄像头
  4. 一文看懂 K8s 日志系统设计和实践
  5. 解析函數論 Page 22 級數收斂的一個充分條件
  6. 一文看懂数据挖掘:哪一种方法最好?都需要哪些技术?
  7. JavaScript进阶部分笔记
  8. C#实现DataTable按天分组并计数
  9. VBS脚本运行库 ——文本文件的建立、追加、删除等
  10. 象棋游戏java代码_象棋游戏 - java代码库 - 云代码
  11. G码云+hexo搭建博客
  12. 英特尔至强处理器排行_英特尔赛扬Vs之间的比较。 至强处理器
  13. 互联网无处不在的“推荐算法”解析
  14. 什么是SD-WAN?网络技术科普
  15. antd table修改没有数据时的显示
  16. 阿里云HaaS100物联网开发板学习笔记(四)轻应用初步--用javascript连接阿里云物联网平台
  17. 进行码分多址CDMA通信
  18. 手动装机太麻烦?别慌Cobbler自动装机来帮你
  19. cp 命令 复制文件及目录
  20. TCP ACKed unseen segment TCP Previous not captured

热门文章

  1. WLAN 无线二层组网,旁挂AC
  2. 机器自动翻译古文拼音 - 十大宋词 - 满江红 怒发冲冠 南宋·岳飞
  3. stm32f4xx标准外设固件库
  4. zabbix学习笔记——入门篇
  5. 2017.08.10小结
  6. 投资区块链做到这五步,规避风险!
  7. Python计算机视觉编程第一章 基本的图像操作与处理
  8. Tello无人机版之使用Scratch2和ROS进行机器人图形化编程学习
  9. python计算长方体体积代码_编写程序,计算一个长方体的表面积和体积。
  10. python Django音乐推荐系统