NC200613. H-你相信爱情吗?
描述
输入描述
第一行一个整数t代表有t个测试样例(1≤t≤100000)
接下来t行,每行俩个整数n和m,如题面所示,1≤n,m<1e18,m≤n;
输出描述
牛郎若能完成考验就输出最小移动次数,不能就输出-1。
示例1
输入:
1 5 2
输出:
5
说明:
牛郎分别收集钻石的位置的次序为2 -> 4 -> 1 -> 3 -> 5,刚好到达织女的位置给她n=5颗钻石,移动了5次完成了考验C++14(g++5.4) 解法, 执行用时: 47ms, 内存消耗: 508K, 提交时间: 2020-02-23 13:36:12
#include <bits/stdc++.h> using namespace std; int main() { int T; cin>>T; while(T--) { long long n,m; cin>>n>>m; if(__gcd(n,m)==1) cout<<n<<endl; else puts("-1"); } return 0; }
C++11(clang++ 3.9) 解法, 执行用时: 42ms, 内存消耗: 612K, 提交时间: 2019-12-29 14:24:07
#include<bits/stdc++.h> using namespace std; long long t,n,m; int main() { cin>>t; while(t--&&cin>>n>>m) if(__gcd(n,m)==1) cout<<n<<'\n'; else cout<<-1<<'\n'; return 0; }
pypy3(pypy3.6.1) 解法, 执行用时: 415ms, 内存消耗: 25684K, 提交时间: 2019-12-29 14:29:55
from math import gcd t = int(input()) for cas in range(t): n, m = map(int, input().split()) g = gcd(n, m) if g == 1: print(n) else: print(-1)