我想編寫一個程序來計算由n行組成的區域數。 第一個例子是我的代碼,第二個例子是我朋友的代碼。我認爲他們正在嘗試做同樣的事情,但對於n = 65535的情況,我的代碼給了我錯誤的答案。我的代碼中的問題在哪裏?無法理解這兩個代碼示例之間的區別
我的代碼:
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
unsigned long long ans;
ans = (n*(n + 1)/2) + 1;
cout << ans << endl;
return 0;
}
我朋友的代碼:
#include <iostream>
using namespace std;
int main(void){
double n,sum;
cin>>n;
sum=n*(n+1)/2+1;
cout<<(long)sum<<endl;
return 0;
}
也許你的朋友知道。 – demoncodemonkey
你在32位機器上嗎?然後它是int溢出。你的朋友的代碼使用雙倍,所以有更多的範圍。 – Dithermaster