题解:P15021 [UOI 2020 II Stage] 方程

· · 题解

题目传送门

给定 x,y,z,k,在 x,y,z 中把一个数 3 次方,一个数 2 次方,问操作后加和等于 k 的方案,如果没有输出 -1 -1 -1

很显然只需要把 x,y,z 的位置枚举即可,可以用深搜,但只有 3 个数的话可以手动枚举。

CODE:

#include<bits/stdc++.h>
using namespace std;
int x,y,z,k;
int main(){
    cin>>x>>y>>z>>k;
    if(x*x*x+y*y+z==k)
        cout<<x<<' '<<y<<' '<<z<<endl;
    else if(x*x*x+z*z+y==k)
        cout<<x<<' '<<z<<' '<<y<<endl;
    else if(y*y*y+x*x+z==k)
        cout<<y<<' '<<x<<' '<<z<<endl;
    else if(y*y*y+z*z+x==k)
        cout<<y<<' '<<z<<' '<<x<<endl;
    else if(z*z*z+x*x+y==k)
        cout<<z<<' '<<x<<' '<<y<<endl;
    else if(z*z*z+y*y+x==k)
        cout<<z<<' '<<y<<' '<<x<<endl;
    else //枚举完都不行就输出 -1 -1 -1
        cout<<"-1 -1 -1"<<endl;
    return 0;
}