NC21363. 数论只会GCD
描述
输入描述
第一行输入一个整数T,表示有T组数据接下来T行,每行为一组数据,每行有两个正整数表示A和B的初始数量
输出描述
对于每组数据,若小西可以获得胜利则输出一行“wula”,否则输出一行“mmp”,不需要输出引号
示例1
输入:
2 20 18 10 4
输出:
mmp wula
Python3 解法, 执行用时: 51ms, 内存消耗: 4544K, 提交时间: 2023-01-26 19:10:49
t = int(input().strip()) for i in range(t): a,b = input().split(' ') a,b = int(a), int(b) if a < b: a, b = b, a ans = 0 while b != 0: if a // b >= 2 or a % b == 0: break a,b = b, a % b ans += 1 print('mmp' if ans % 2 != 0 else 'wula')
C++14(g++5.4) 解法, 执行用时: 3ms, 内存消耗: 488K, 提交时间: 2018-11-25 15:22:21
#include<bits/stdc++.h> using namespace std; long long i,i0,n,m,T; int main() { scanf("%lld",&T); while(T--) { scanf("%lld %lld",&n,&m); if(n>m)swap(n,m); if(n==m||n<m-m/(1+(1+sqrt(5))/2))printf("wula\n"); else printf("mmp\n"); } return 0; }
C++11(clang++ 3.9) 解法, 执行用时: 6ms, 内存消耗: 496K, 提交时间: 2020-01-15 15:37:17
#include <bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while(t--) { double a,b; cin>>a>>b; if(b>a) {//改成a大b小 double t = a; a=b; b=t; } if(a/b>(sqrt(5)+1)/2) cout<<"wula"<<endl; else cout<<"mmp"<<endl;; } return 0; }