c++ - 计算填满国际象棋 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();
}
我不需要完整的代码作为答案,请告诉我必须使用哪种数据类型,或者我是否做错了只有建议而不是解决方案。谢谢。
解决方案
您需要一个 64 位unsigned
来表示结果。
C++ 标准要求unsigned long long
至少是那个大小,所以这就是要使用的那个。
顺便说一句,答案是
~(uint64_t)0;
推荐阅读
- windows - Where is the "downloads" folder located
- google-sheets - 谷歌表格查询从包含日期和时间的一组行中选择年、月和日作为字符串
- docker - 尝试从正在运行的容器中删除目录时设备或资源忙
- javascript - 获取多个对象内的数组
- html - 正则表达式:如果存在先前的单词,则捕获后续值
- flutter - hiii 任何人都可以解决这个颤振问题吗?
- c# - How to Sort a String in c#
- sockets - 通过端口获取服务名称
- ruby-on-rails - 当我尝试更新我的 gemfile 以将其链接到 Heroku 时遇到问题
- python - 如何覆盖 django 文件?