它的一些误判。
我遇到了大数字的麻烦。此代码适用于一些较小的输入(N
),但100000
不适用于类似的输入。
result
变量when N = 100000
must be 4999949998
but result in this code的正确最终答案是704982702
long long result = 0;
int N;
cin >> N;
.
. //some changes on result
.
result = result / 2;
long long tmp =( N*(N - 1) ) / 2;
result = tmp - result;
cout << result << endl;
但tmp
也很长,而且似乎没有溢出。
但一些简单的改变使它正确。
long long result = 0;
int N;
cin >> N;
.
. //some changes on result
.
result = result / 2;
long long tmp = 0;
for (int i = 1; i < N; i++)
tmp += N;
tmp = tmp / 2;
result = tmp - result;
cout << result << endl;
我找不到原因。你知道吗?