我正在写一个关于乘法持久性的代码,我需要写一个计算数字中数字乘积的函数。这是一个基本函数,我已经写了,但我意识到它不能计算任何超过10位数的数字的乘积。如果数字有11位或更多位,它只会说“903168”,不管输入什么数字。
这是它自己的样子:
#include <iostream>
using namespace std;
int main()
{
int a; int product = 1;
cout << "Enter a number: ";
cin >> a;
do
{
product = product * (a % 10);
a = a / 10;
}
while (a != 0);
cout << "The product of the digits of this number is: " << product;
}
还有人面临过同样的问题吗?你知道我该如何修复它,以便能够对任何数字使用这个功能吗?
2条答案
按热度按时间iqxoj9l91#
这里有一个时间复杂度为
O(log n)
的方法。递归有时可以降低时间复杂度。希望这对你的问题有帮助!bjg7j2ky2#
你需要使用一个更大的类型来保存你输入的数字和产品。在你的系统上,
int
几乎肯定是32位。让我们使用long long int
,它是64位。现在:
修改上面的代码以避免
using namespace std;
,并使用使位数更明显的类型。