首页 > 解决方案 > 计算填满国际象棋 64 格所需的总米数

问题描述

我只想计算填充 64 盒棋盘需要多少米,但问题是,如果我减少行数和列数,那么程序运行正常,但是如果我输入实际的 8*8 行和列,那么它会显示 0 我认为很长数据类型不足以存储我需要的输出然后我将使用什么。

#include <iostream>
#include<cstring>
#include<stdlib.h>
using namespace std;

long fn()
{
    int val;
    long i=1;
    for(int row=1;row<=8;row++)
    {
        for(int col=2;col<=8;col++)
        {
            val = i*2;
            i=val;
        }
    }
    return i;
}



main()
{
    cout << fn();

}

我不需要完整的代码作为答案,请告诉我必须使用哪种数据类型,或者我是否做错了只有建议而不是解决方案。谢谢。

标签: c++

解决方案


您需要一个 64 位unsigned来表示结果。

C++ 标准要求unsigned long long至少是那个大小,所以这就是要使用的那个。

顺便说一句,答案是

~(uint64_t)0;

推荐阅读