對於以下代碼:
int digsum(ll num) { //function to calculate sum of digits
if (num < 0)
num = abs(num);
int ans = 0;
while (num != 0) {
ans = ans + num % 10;
num = num / 10;
}
return ans;
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0);
int a, b, c, cnt = 0;
long long x;
cin >> a >> b >> c;
for (int i = 0; i <= 72; i++) {
x = (b * (pow(i, a))) + c;
if (i == digsum(x) && x < mod) {
cout << x << " ";
}
}
return 0;
}
如果是
a,b,c = 3,2,8
分別和
i=19;
pow(19,3)
應该計算19 ^ 3,但是当我替換
pow
到(19x19x19)時,此特定情况已得到满足,而
pow
並非如此
功能。
有人可以解釋這个問题是什麼吗?
最新回復
- 6月前1 #
我的靈通能力表明您的標準庫對
pow
的實現 不精確.我迴想起有關该主题的讨論.記住,pow
返迴浮點值.我無法對其进行複製,但這完全可能是您對pow(19,3)
的呼叫 返迴6858.999999999
或由於其優化方式而相似。實際上,此頁面上的內容如下:
此外,這个問题和答案也暗示了同樣的事情。
我不会怀疑的,但是你去了。
考虑這樣做是一種解決方法: