多语言代码练习·一棋盘的麦子 C语言&&C++&&Python&&Java

在这里插入图片描述14天阅读挑战赛

努力是为了不平庸~

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。

学习日记

目录

学习日记

一棋盘的麦子


一棋盘的麦子

故事背景:

        舍罕是古印度的国王,据说他十分好玩。宰相依达尔为了讨好国王,发明了现今的国际象棋献给国王。国王非常喜欢,决定嘉奖宰相,许诺满足宰相提出的任何要求。宰相指着棋盘要求:“陛下,请您按棋盘的格子赏赐我一点小麦吧,第一个小格赏我1粒麦子,第二个小格赏我2粒,第三个小格赏4粒,以后每一小格都比前一个小格赏的麦子增加一倍,只要把棋盘上全部64个小格按这样的方法得到的麦子都赏赐给我,我就心满意足了”。国王听了宰相这个“小小”的要求,马上同意了。但是在给宰相麦子时,国王发现他要付出的比自己想象的要多得多,于是进行了计算,结果令他大惊失色。问题是:舍罕王的计算结果是多少粒麦子。

作为例题来思考一下:

输入要求:

        一个整数n代表棋盘的格子,该数字大于1且小于等于64。如输入2,则表示有2个格子,第一个格子放1粒,第二个格子放2粒,则2个格子一共需要3粒麦子。

输出要求:

        n个格子需要的麦粒数。

#C语言 

#include<stdio.h>
#include<math.h>
 
int main()
{
    int n,i,a;
    unsigned __int64 sum=0;
    
    scanf("%d",&n);
    for(i=0; i<n; i++)
    {
        a = pow(2,i);
        sum += a;
        //sum += pow(2,i);语句出错
    }
    printf("%I64u\n",sum);
    
    return 0;
}

#Java

import java.math.BigInteger;

public class Main1 {
    
    public static void main(String[] args) {
        BigInteger a = BigInteger.ONE;
        BigInteger b = new BigInteger("2");
        for(int i = 1;i <= 64;i++)
            a = a.multiply(b);
        a = a.subtract(BigInteger.ONE);
        System.out.println(a);
    }
}

#Python

results = 0
result = 1
for item in range(64):
  results += result
  result *= 2
print(results)

#C++

#include <bits/stdc++.h>
using namespace std;
int main()
{
unsigned long long sum=0;
long long a=1;
for(int i=0;i<65;i++)
{
    sum += a;a = a*2;
}
cout<<sum;
  return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_63794226/article/details/127469897