判断同构数(C++)

2025-04-19 15:16:52
推荐回答(1个)
回答1:

pow函数使用有问题。

Math库里的pow函数的返回类型是一个精度浮点数。

你在isomorphism函数中直接另mod为整型

实际上损失了你后来的pow(10,a)的精度。

就比如说pow(10,2)的返回值是一个99.xxxxxxx的数,然后你直接int了,所以在位数等于2时,你的mod就变成99了。

我们看下面这段代码:

运行结果为两个1,说明的确在你位数等于2的时候,你mod是99而不是100。

所以有一个改进建议就是

if(isomorphism(i,pow(10,a)))

改成

if(isomorphism(i,(pow(10,a)+0.5)))

有疑问请追问叭。