gpt4 book ai didi

c++ - 在 C++ 中返回一个大数

转载 作者:太空宇宙 更新时间:2023-11-04 16:19:29 25 4
gpt4 key购买 nike

我是一名初级程序员,正在尝试 Codility Frog 跳问题。这是我的代码解决方案:

int solution(int, int, int, unsigned long int&);

int main(){

unsigned long int stepsTaken = 1;

int x = 10;
int y = 85;
int d = 30;

solution(x, y, d, stepsTaken);

cout << "Total Steps Taken: " << stepsTaken << endl;
}

int solution( int X, int Y, int D, unsigned long int &stepsTaken) {

int currentPosition = X;
int positionToGetTo = Y;
int stepsJumpedEachTime = D;

currentPosition += stepsJumpedEachTime;

if(currentPosition < positionToGetTo){

stepsTaken++;
solution(currentPosition, positionToGetTo, stepsJumpedEachTime, stepsTaken);
}

return stepsTaken;
}

现在我遇到的问题是当我试图满足处理 1-1000000000 范围内数字的要求时。如果我将上面的 int y 更改为 2000000,我会得到一个负返回值。 unsigned long int 应该返回一个正数,但是当我使用 2000000 时它返回负数。

最佳答案

发生这种情况是因为 C++ 中的整数有限制 - 参见 http://www.cplusplus.com/reference/climits/ .在大多数情况下,标准类型应该可以满足您的需求。

如果没有足够大的标准类型,请参阅 What's the best (for speed) arbitrary-precision library for C++?

这是你的代码的一个更简单的版本,你觉得怎么样?

unsigned long int solution( int currentPosition, int positionToGetTo , int stepsJumpedEachTime) {

if (currentPosition >= positionToGetTo)
return 0;

return 1 + solution(currentPosition + stepsJumpedEachTime, positionToGetTo, stepsJumpedEachTime);

}

int main(){

int x = 10;
int y = 85;
int d = 30;

unsigned long int stepsTaken = solution(x, y, d);

cout << "Total Steps Taken: " << stepsTaken << endl;
}

关于c++ - 在 C++ 中返回一个大数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18898588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com