NC54563. 不定方程
描述
输入描述
第一行一个整数,表示数据的组数。
接下来一共T行,第行表示第i组数据。每一行两个整数。x,y的含义如题目描述所示。
输出描述
输出T行,第i行对应输入的第i组数据。
如果满足,输出三个整数,每个数之间存在空格。如果不满足则输出-1。
如果答案有多个,你可以输出其中任意一个,不能超过。
示例1
输入:
1 3 5
输出:
5 3 15
说明:
5*3=3*5=15,可以证明如果a=5,b=3,那么对于ax=by=c,15是c可能的最小的取值。C++(g++ 7.5.0) 解法, 执行用时: 3ms, 内存消耗: 384K, 提交时间: 2022-10-29 10:15:10
#include<bits/stdc++.h> using namespace std; int main() { int t;cin>>t; while(t--){ long long int a,b,c,x,y; cin>>x>>y; if(gcd(x,y)!=1) cout<<-1<<endl; else cout<<y<<' '<<x<<' '<<x*y<<endl; } return 0; }
C++14(g++5.4) 解法, 执行用时: 3ms, 内存消耗: 344K, 提交时间: 2019-12-01 22:32:11
#include<bits/stdc++.h> using namespace std; int main(){ int T; long long x,y; cin>>T; while(T--){ cin>>x>>y; if(__gcd(x,y)!=1) cout<<-1<<endl; else cout<<y<<" "<<x<<" "<<x*y<<endl; } }
C++11(clang++ 3.9) 解法, 执行用时: 4ms, 内存消耗: 364K, 提交时间: 2019-12-04 19:10:13
#include <bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while(t--){ long long x,y; cin>>x>>y; if(__gcd(x,y)!=1){ cout<<"-1"<<endl; }else{ cout<<y<<" "<<x<<" "<<x*y<<endl; } } return 0; }
Python3(3.5.2) 解法, 执行用时: 25ms, 内存消耗: 3424K, 提交时间: 2019-12-01 14:18:45
from math import gcd T = int(input()) for cas in range(T): x, y = map(int, input().split()) if gcd(x, y) != 1: print(-1) continue print(y, x, x * y)