计算填充国际象棋64正方形所需的米饭总数
calculate how many total rice required to fill chess 64 squares
我只想计算填充64盒棋盘需要多少米排和科尔斯,然后向我展示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();
}
我不需要整个代码作为答案,请告诉我我要使用的数据类型,或者如果我做错了,只有建议而不是解决方案。谢谢
您需要一个64位unsigned
来表示结果。
C 标准需要unsigned long long
至少为该大小,因此可以使用。
~(uint64_t)0;
似乎您的代码正在计算一个小于2^64的值,即18.446.744.073.709.551.616,大约1.8 * 10^19。未签名的长长int 可以存储一个值为18.446.744.073.709.551.615的值。
对于经典问题,您必须计算总和1 2 2^2 2^3 ... 2^63,是2^64-1,与无签名长的最大值相同长int。为此,修改代码如下:
unsigned long long int fn()
{
unsigned long long int val = 0;
unsigned long long int i = 1;
for(int row = 1; row <= 8; row++)
{
for(int col = 1; col <= 8; col++)
{
val = val + i;
i = i * 2;
}
}
return val;
}
相关文章:
- 在c++中用vector填充一个简单的动态数组
- 如何使用用户输入在C++中正确填充2D数组
- 如何找到大小'x'数组是否完全填充,在C++?
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- 通过for循环使用用户输入填充列表
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 如何正确填充在堆上分配的二维数组?
- 将数字转换为填充字符串
- 有没有办法在一行中填充矢量图
- 用C++中的数字和条件填充向量
- 用真值填充矢量
- 使用结构成员指针在C++中填充结构
- 流填充字符的默认定位
- 使用不同算法的 PKCS1v15 填充进行加密 ++ 签名
- C++:使用缓冲区中的数据填充结构
- 如何将零填充的多维数组传递给 C++ 中的函数?
- Cryptopp:获取密码输入的填充字符串
- 填充上编译器生成的复制构造函数之间的不一致
- RcppEigen 模板化函数,用于填充单位法线
- 计算填充国际象棋64正方形所需的米饭总数