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

2023/6/5 20:27:15

题目来源:蓝桥杯2012初赛 Java C组C题

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

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

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

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

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

问题分析
这是一个大数计算问题。
用Python语言来实现比较简单,因为有大数类型及运算符。
用Java语言来实现也比较简单,可以用大数来实现,不过也许迭代计算会比较快一些。
用C语言来实现,则需要模拟大数计算,这里采用亿进制来实现。采用迭代计算,计算2n(n=1,2,3,…,64)时,可以避免重复计算。

AC的C语言程序如下:

/* LQ0262 棋盘放麦子 */

#include <stdio.h>
#include <string.h>

typedef long long LL;
#define MOD 100000000LL
#define N 3
LL a[N], sum[N];

int main()
{
    memset(a, 0, sizeof a);
    memset(sum, 0, sizeof sum);

    a[0] = 1;
    for (int i = 1; i <= 64; i++) {
        /* sum += a; */
        LL carry = 0;
        for (int j = 0; j < N; j++) {
            sum[j] += a[j] + carry;
            carry = sum[j] / MOD;
            sum[j] %= MOD;
        }

        /* a *= 2 */
        carry = 0;
        for (int j = 0; j < N; j++) {
            a[j] = a[j] * 2 + carry;
            carry = a[j] / MOD;
            a[j] %= MOD;
        }
    }

    printf("%lld%08lld%08lld\n", sum[2], sum[1], sum[0]);

    return 0;
}

AC的Java语言程序如下:

/* LQ0262 棋盘放麦子 */

import java.math.BigInteger;

public class Main {
    public static void main(String[] args) {
        BigInteger sum = new BigInteger("0");
        BigInteger TWO  = new BigInteger("2");
        for (int i = 0; i < 64 ; i++)
            sum = sum.add(TWO.pow(i));
        System.out.println(sum);
    }
}

AC的Java语言程序如下:

/* LQ0262 棋盘放麦子 */

import java.math.BigInteger;

public class Main {
    public static void main(String[] args) {
        BigInteger sum = new BigInteger("0");
        BigInteger a = new BigInteger("1");
        BigInteger TWO  = new BigInteger("2");
        for (int i = 1; i <= 64 ; i++) {
            sum = sum.add(a);
            a = a.multiply(TWO);
        }
        System.out.println(sum);
    }
}

AC的Python语言程序如下:

print(2**64-1)

http://www.jnnr.cn/a/154208.html

相关文章

Android 13 Wi-Fi状态机流程及Log分析

本文基于Android 13源码解读,对Wi-Fi状态机调用流程进行梳理,并结合Log进行分析,便于大家理解Wi-Fi模块调用流程。 梳理出Wi-Fi状态机共有如下几种状态: mConnectableState mConnectingOrConnectedState mL2ConnectingState mL2ConnectedState mL3ProvisioningState …

基于SSM的毕业设计管理系统【数据库设计、源码、开题报告】

数据库脚本下载地址&#xff1a; https://download.csdn.net/download/itrjxxs_com/86469261 主要使用技术 SpringSpringMVCMybatisBootstrapJqueryMysql 功能介绍 本系统的用户可以分为三种&#xff1a;管理员、教师、学生。 管理员&#xff1a;导师管理、学生管理&#x…

现代密码学导论-17-伪随机函数

目录 3.5.1伪随机函数的非正式定义 |Func_n| 有多大&#xff1f; DEFINITION 3.24 伪随机函数的正式定义 Example 3.25 一个不安全的反例 3.5.1伪随机函数的非正式定义 伪随机函数&#xff08;PRFs&#xff09;推广了伪随机发生器的概念。 F : {0, 1}∗ {0, 1}∗→ {0, 1…

Python入门、环境搭建、变量、数据类型

目录 前景 官方下载 基本数据类型 动态语言的体现 静态语言的体现 弱语言的体现 强语言的体现 注释 整数 浮点型 浮点型计算方案 字符串 布尔 引用数据类型 列表 [ ] 列表方法 集合Set{} 基本方法 特殊需求方法 应用场景 字典{} 常见操作 元组 操作符 练习…

Debian11之基于kubeadm安装K8S集群

官方安装教程 硬件要求 每台机器的内存要 2GB、CPU2 核心及以上 集群中的所有机器的网络彼此均能相互连接&#xff08;公网和内网都可以&#xff09; 节点之中不可以有重复的主机名、MAC 地址或 product_uuid 开启机器上的某些端口 为了保证 kubelet 正常工作&#xff0c;必须…

VuePress构建一个文档管理网站

序言 目前无论笔记还是项目文档&#xff0c;大部分我都会通过 Markdown来记录&#xff0c;并且大部分文档写完都只存在自己电脑上&#xff0c;每次查找起来都需要耗费一些时间 自己的写的一部分技术教程由于初次记录时了解知识不多&#xff0c;内容存在偏差或考虑不全面&…

【学习笔记41】DOM操作的练习

一、回到顶部 我们在浏览页面的时候&#xff0c;当我们浏览到一个页面的底部的时&#xff0c;一般都会有一个返回底部 &#xff08;一&#xff09;案例分析 1、当页面滚动的距离大于300的时候&#xff0c;让herder和btn展示 header的top设置为0的时候就能看到btn的display设置…

Linus 文件处理(三)

目录 一、前言 二、扫描目录 1、opendir 2、readdir 3、telldir 4、seekdir 5、 closedir 6、A Directory-Scanning Program 三、Errors 1、strerror 2、perror 一、前言 本文将简单介绍Linux文件和目录&#xff0c;以及如何操作它们&#xff08;如何创建文件、打开…

deepvariant 基因变异识别算法docker版使用

参考&#xff1a;https://github.com/google/deepvariant docker版安装 参考&#xff1a;https://github.com/google/deepvariant/blob/r1.4/docs/deepvariant-quick-start.md 本文是windows上安装的deepvariant 1.4.0版本 docker pull google/deepvariant:1.4.0docker版使用…

Android加载第三方so库

本篇文章使用的android studio版本是:Android Studio Bumblebee | 2021.1.1 Patch 2 上一篇文章&#xff1a;Android开发java调用C简单示例 演示了java调C&#xff0c;那么so文件能否复用到别的项目了&#xff1f; 这次我们尝试用上一篇文章生成的so库&#xff0c;调用里面的…

ps打开图片的三种方式 同步部分基本操作方式

观看本文 需要您的电脑已安装PS工具 如果没有 可以观看我的文章 PS软件下载安装以基本配置 然后打开PS 就会变成一个这样的界面 然后点击右上角的 PS 进入工作区 然后我们就会进入 一个这样的工作区 然后我们在左上角点击文件 选择 打开 然后 在文件框中 找到自己想处理的图…

Spring - ApplicationContextInitializer 扩展接口

文章目录Preorg.springframework.context.ApplicationContextInitializer扩展点扩展接口扩展生效方式方式一 &#xff1a; Spring SPI扩展方式二 &#xff1a; 配置文件方式三 &#xff1a;启动类手工add测试结果Pre Spring Boot - 扩展接口一览 org.springframework.context.…

Codeforces Round 836 (Div. 2) A - C

A:SSeeeeiinngg DDoouubbllee 题意&#xff1a;给定一个字符串&#xff0c;每个字符串的字符可以出现两次&#xff0c;要求通过重新排列构造一个回文串。 思路&#xff1a;直接暴力可以&#xff0c;每个字符头部一个尾部一个。 #include<cstdio> #include <iostream…

【csdn】gitcode初体验(开发云、Pages等)(持续更新)

▒ 目录 ▒&#x1f6eb; 导读需求开发环境1️⃣ 开发云上免密提交代码【https方式】gitcode页面直接进入开发云2️⃣ 【git方式】通过开发云主页创建项目实现免密更新git1. 通过gitcode页面获取git地址2. 创建并配置SSH公钥&#xff08;所有项目&#xff0c;公用一个公钥&…

.NET 6 支持Cookie与JWT混合认证、授权的方法

从.NET 5开始&#xff0c;.Net Core 与.NET Fremework 合并成了 .NET 5&#xff0c;所以标题也很让人尴尬&#xff0c;不知道该写成是.NET Core还是.NET X。因为这个方法支持.NET 5、6、7。 目录前言Cookie 认证JWT认证总结前言 不知道大家有没有过这样的需求&#xff0c;为了…

代码随想录——字符串篇

1、反转字符串 344.反转字符串 力扣题目链接 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数…

【图像处理】小波编码图像中伪影和纹理的检测附Matlab代码和报告

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

必知必会的Java多线程可算是被讲透彻了,让我们一起深入浅出多线程!

Java 提供了多线程编程的内置支持&#xff0c;让我们可以轻松开发多线程应用。 Java 中我们最为熟悉的线程就是 main 线程——主线程。 一个进程可以并发多个线程&#xff0c;每条线程并行执行不同的任务。线程是进程的基本单位&#xff0c;是一个单一顺序的控制流&#xff0c;…

pdf编辑软件哪个好?编辑pdf的软件分享一款,像word一样好用!

编辑文档时&#xff0c;很多人习惯用word及pdf进行办公&#xff0c;而使用中&#xff0c;经常会发现word和pdf之间&#xff0c;总是无法满足我们的切换需要。如果掌握一款可以编辑pdf的软件&#xff0c;像word一样简单使用&#xff0c;又能满足word的各种功能所需&#xff0c;那…

b、B、KB、Kib、MB、MiB、GB、GiB、TB、TiB的区别

1024这个数字&#xff0c;想必计算机行业从业人员应该不会陌生&#xff0c;甚至10月24日还被当做程序员日&#xff0c;如果你问一个程序员1GB等于多少MB,他大概率会不假思索回答:1024。 没错&#xff0c;对于稍微对计算机或者网络有了解的人&#xff0c;一般都认为1024是数据容…