C++ 大量使用pow(x,y)

C++ 大量使用pow(x,y),c++,math.h,C++,Math.h,我正在输入一个数字n,其中1对于典型的32位和64位浮点数据类型(float和double),它们被限制在以下范围内: float: 3.4E +/- 38 (that is, 3.4 * 10^(+/-38)) (with 7 digits of precision) double: 1.7E +/- 308 (that is, 1.7 * 10^(+/-308)) (with 15 digits of precision) 100000位数的数字可能超出这些数据类型的范围。因此,它失

我正在输入一个数字n,其中1对于典型的32位和64位浮点数据类型(
float
double
),它们被限制在以下范围内:

float:  3.4E +/- 38  (that is, 3.4 * 10^(+/-38))  (with 7 digits of precision)
double: 1.7E +/- 308 (that is, 1.7 * 10^(+/-308)) (with 15 digits of precision)

100000位数的数字可能超出这些数据类型的范围。因此,它失败了(在某种程度上),尽管您没有告诉我们它是如何失败的。

处理大数字并不是一件小事;为此,不能仅使用内置类型,如
int
double
long
,等等。为了计算一个100000位的数字,你需要有超过300000位(几千字节);这绝非易事。相反,您可以打印答案而无需计算

如果说一个数可以被2、3、5和7整除,那么这个数等于
num%210==0
。因此,您的问题的答案如下所示:

100000000000... (really many zeros) ...00000xy0
您只需找到两位数字x和y,然后打印上面的“数字”

因此,您必须计算
pow(1099999)%210
而不计算
pow(1099999)
。要执行此操作,请从功率(10,0)=1开始,然后依次乘以10:

pow(10, 0) % 210 = 1
pow(10, 1) % 210 = (1   * 10) % 210 = 10
pow(10, 2) % 210 = (10  * 10) % 210 = 100
pow(10, 3) % 210 = (100 * 10) % 210 = (1000 % 210) = 160
pow(10, 4) % 210 = (160 * 10) % 210 = (1600 % 210) = 130
pow(10, 5) % 210 = (130 * 10) % 210 = (1300 % 210) = 40
...

以这种方式计算
pow(109999)%210
后(假设它是
xyz
),添加
210-xyz
将使该数字可被210整除。因此,要输出答案,请打印
1
,然后打印99996次
0
,然后打印
210-xyz

您需要一个100000位的数字吗?请告诉我们错误是什么!你应该使用数组来存储这样的数字。你想做什么?我已经用我的代码更新了我的问题。谢谢,这正是我想要的。现在似乎是个愚蠢的问题。
pow(10, 0) % 210 = 1
pow(10, 1) % 210 = (1   * 10) % 210 = 10
pow(10, 2) % 210 = (10  * 10) % 210 = 100
pow(10, 3) % 210 = (100 * 10) % 210 = (1000 % 210) = 160
pow(10, 4) % 210 = (160 * 10) % 210 = (1600 % 210) = 130
pow(10, 5) % 210 = (130 * 10) % 210 = (1300 % 210) = 40
...