文章

20

粉丝

148

获赞

224

访问

73.0k

头像
题目难点:数学公式不断化解
P1095
发布于2023年4月14日 17:01
阅读数 5.9k

这个题表面上看起来无从下手,实际上需要我们运用学过的数学公式进行化解。

题目给的四个式子

X+Y=A

X^2+Y^2=B

X^3+Y^3=C

X^4+Y^4=D

我们需要用到三个公式,即平方和、立方和、四次方和

X^2+Y^2 = (X + Y)^2 - 2*X*Y

X^3+Y^3 = (X+Y)*(X^2 - X*Y + Y^2)

X^4 + Y^4 = (X^2+Y^2)^2 - 2*X^2*Y^2(这个式子还可以化解成和三次方相关的等式)

如果我们令W = X * Y,那么可以将上面的式子化解成

B = A^2 - 2*W  推出 W = (A^2 - B) / 2

带入立方和和四次方和可得

C = A * (B - W)

D = B * B - 2 * W * W

所以代码如下:

#include <stdio.h>
int main()
{
    int A, B, C, D;
    while (scanf("%d%d%d%d", &A, &B, &C, &D) != EOF) {
        double W;
        W = (A * A - B) / 2;//xy
        if ((A * B == C + W * A) && (D == B * B - 2 * W * W))  
        {
            printf("Y\n");
        }
        else printf("N\n");
    }
    return 0;
}

 

登录查看完整内容


登录后发布评论

4 条评论
yan591
2026年1月12日 00:31

#include <stdio.h>
void check(int a,int b, int c,int d){
    for(int i=0;i<=a;i++){
        for(int j=0;j<=a;j++){
            if(    i+j==a &&
                i*i+j*j==b &&
                   i*i*i+j*j*j==c &&
                   i*i*i*i+j*j*j*j==d
            ){printf("Y\n");return;}
        }
    }
    printf("N\n");
}
int main(){
    while(1){
        int a,b,c,d;
        scanf("%d %d %d %d",&a,&b,&c,&d);
        check(a,b,c,d);
    }
    return 0;
}

为什么编译器里OK,但提交不通过,哪有问题吗?

赞(0)
回复给:
南烛
2026年1月11日 11:52

 

赞(0)
回复给:
jerryking
2026年1月4日 16:49

这个思路无敌了surprise

赞(0)
回复给:
jisuanji111
2025年2月18日 20:24

哥你厉害!!!

赞(1)
回复给: