日常踩坑——Dev C++ pow()函数的坑

Dev C++ pow()函数

那年冬天,显示屏前坐着如喽啰,那时候我含泪发誓,再也不用Dev。

蓝桥杯官网给提供的版本,没办法bug也得硬着头皮用。

16年蓝桥杯的第八题 四平方和定理:

在Dev上就是跑不出正确答案,不信邪,就在vs上跑,完全正确。

#include 
#include 
using namespace std;

int main() {
    int x;
    int sign = true;
    cin >> x;
    for (int i = 0; i <= sqrt(x) && sign; i++) {
        int I = pow(i, 2);
        for (int j = i; j <= sqrt(x) && sign; j++) {
            int J = pow(j, 2);
            for (int k = j; k <= sqrt(x) && sign; k++) {
                int K = pow(k, 2);
                double L =sqrt( x - I - J - K);
                if (L==int(L)) {
                    cout << i <<" "<< j <<" "<< k<<" " << L<<endl;
                    sign = false;
                }
            }
        }
    }
    return 0;
}

经过我的穷举调试大法,

#include 
#include 
using namespace std;

int main(){
    for(int i=0;i<100;i++){
        int L=pow(i,2);
        if(L!=i*i){
        cout<" "<endl;
        }
    }
    return 0;
}

运行结果: 日常踩坑——Dev C++ pow()函数的坑_第1张图片

我可以理解,因为pow形参,结果都为浮点数,可能是形参转换的时候变成了4.99999999,又或者是结果出现了24.99999999,但是别的编译器里从来没碰到过这种情况,真的坑啊,根本想不到。

你可能感兴趣的:(日常踩坑——Dev C++ pow()函数的坑)