111. 构造二阶行列式(卡码网周赛第十六期(23年oppo提前批笔试真题))
题目描述
小欧希望你构造一个二阶行列式,满足行列式中每个数均为不超过 20 的正整数,且行列式的值恰好等于x。你能帮帮她吗?
输入
一个正整数x。-1000 <= x <= 1000
输出
如果无解,请输出-1。否则输出任意合法行列式即可(输出两行,每行输出两个不超过20的正整数)。
样例输入
2
样例输出
3 2
5 4
提示
输出:
3 4
7 10
也是满足条件的。
题解1(C++版本)
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
scanf("%d", &n);
for(int a = 1; a <= 20; a++){
for(int b = 1; b <= 20; b++){
for(int c = 1; c <= 20; c++){
for(int d = 1; d <= 20; d++){
if(a * d - b * c == n){
printf("%d %d\n%d %d\n", a, b, c, d);
return 0;
}
}
}
}
}
printf("-1\n");
return 0;
}