Java解决国际象棋放米粒问题

news/2024/10/30 19:22:41/

有个很古老的传说,那时候象棋刚刚发明出来,阿拉伯的一个国王一下就迷上了,觉得应该重奖发明这个游戏的人,结果发明者来了,他让人家提要求,人家说棋盘上第一个格放1粒麦子,第二个格2粒,第三格4粒,第四格8粒,这样类推下去,最后一个格也放满,最后把这些麦粒奖给他,国王欣然同意,觉得这个人很厚道,不漫天要价,结果按照这个规律装麦粒的时候才发现,原来全国粮仓里的麦子也不够用。这就是典型的数量级上的错误

大家都知道,在Java中,最大的数据类型是long, 但是这个问题,数据庞大到long也解决不了,在java中还有一种方法可以解决那就是BigInteger,,可以用他来解决,,废话不多说,直接上代码

这是方法一:用了两层for循环

package com.dj.chouxiang;import java.math.BigInteger;public class number2 {public static void main(String[] args) {long a=System.currentTimeMillis(); // 获取开始时间BigInteger sum=BigInteger.ZERO;for(int i=1;i<=64;i++){BigInteger item=BigInteger.ONE;for(int j=1;j<i;j++){item=item.multiply(BigInteger.valueOf(2));}sum=sum.add(item);System.out.println(i+":"+item);}long b = System.currentTimeMillis(); // 获取结束时间System.out.println("所耗时间是:"+(b-a)+"ms");System.out.println(sum);}
}

这是方法二:

public class number2_1 {public static void main(String[] args) {long a=System.currentTimeMillis(); // 获取开始时间String coun = "1";String sum = "0";for (int i = 1; i <=64; i++) {System.out.println(i+":"+coun);BigInteger big = new BigInteger(coun);BigInteger max = new BigInteger(sum);sum = big.add(max).toString();coun = big.add(big).toString();}System.out.println("sum="+sum);long b = System.currentTimeMillis(); // 获取结束时间System.out.println("所耗时间是:"+(b-a)+"ms");}
}

http://www.ppmy.cn/news/460232.html

相关文章

(原创)关于中国象棋的

1.忌麻痹大意→设法减少失误的次数&#xff08;关键在于熟识子力布局和敌我形势&#xff0c;不犯低级错误&#xff09;. 2.未雨绸缪→动子前多想几步,车压马阻其入境. 3.进马→欲赢棋则马必进(条件∶车在马前或炮在马后,宜及早铺好马路,则能一纵千里). 4.伏打象→底线及河…

【经典100题】 题目9 输出国际象棋棋盘

国际象棋棋盘 C语言实现 #include<stdio.h>void oddRow1(); void evenRow1();void main() {for (int i 1; i < 8; i){if(i % 2 1)oddRow1();elseevenRow1();} }void oddRow1() {for (int i 1; i < 4; i)printf("■□"); printf("\n"); }v…

java简单实现中国象棋

java简单实现中国象棋 可以实现简单的人机对战功能&#xff0c;棋子移动会插入关键帧&#xff0c;可以悔棋等功能 运行效果 import java.awt.Canvas; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.event.ActionEvent; import ja…

象棋引擎简单引用

背景 体验到小视频带来的流量福利后&#xff0c;国内广告软件与日俱增&#xff0c;本人热爱象棋&#xff0c;在使用软件时深感体验不佳&#xff0c;于是打算自己做一款来辅助自己日常练习&#xff0c;以保证野路子养成日记的续写。 考虑到自身不是算法班出身&#xff0c;也没…

P2051 [AHOI2009] 中国象棋(dp)

题目描述 这次小可可想解决的难题和中国象棋有关&#xff0c;在一个 nn 行 mm 列的棋盘上&#xff0c;让你放若干个炮&#xff08;可以是 00 个&#xff09;&#xff0c;使得没有一个炮可以攻击到另一个炮&#xff0c;请问有多少种放置方法。大家肯定很清楚&#xff0c;在中国…

用C++实现中国象棋(2.0)

项目介绍 前几天开发的象棋游戏程序有了一些新的进展&#xff0c;添加了一些新的功能&#xff1a;将军检测与提示、自动判和&#xff08;双方均无过河子&#xff09;、悔棋、棋谱导入与导出&#xff08;自定义棋局&#xff09;&#xff0c;不过源代码也有了很大的改动&#xf…

用java编国际象棋3之将军与悔棋

Hello!大家好&#xff01;我们前两次已经完成了对棋子基本走法与吃法的约束&#xff0c;今天我们要加入将军的概念&#xff0c;它牵扯到如下几个规则&#xff1a; 1.己方的王不能走&#xff08;或吃&#xff09;到对方棋子威胁到的格子 2.当己方被将军时&#xff0c;必须应对将…

全面评测安全企业邮箱加密服务,推荐高性价比提供商

安全电子邮件是加密形式的电子邮件。有权访问密钥的人只能阅读电子邮件。有许多安全的电子邮件发送工具可以避免业​​务风险并保护电子邮件中写入的信息。这些工具使您能够使用安全的端到端电子邮件加密来发送和接收消息。Zoho Mail企业邮箱最适合多用户帐户、小型企业和个人使…