先將二進位字串轉成數字後,求兩數的最大公因數即可知道解答。
C++(0.000)
/*******************************************************/
/* UVa 10193 All You Need Is Love */
/* Author: Maplewing [at] knightzone.studio */
/* Version: 2018/10/06 */
/*******************************************************/
#include <iostream>
#include <cstdio>
using namespace std;
int binaryStringToInt(string s){
int num = 0;
for(int i = 0 ; i < s.length() ; ++i){
num <<= 1;
num += s[i] - '0';
}
return num;
}
int gcd(int a, int b){
if(a == 0 || b == 0) return a + b;
while((a %= b) != 0 && (b %= a) != 0);
return a + b;
}
int main(){
int N;
while(scanf("%d", &N) != EOF){
for(int caseNumber = 1 ; caseNumber <= N ; ++caseNumber){
string s1, s2;
cin >> s1 >> s2;
int num1 = binaryStringToInt(s1), num2 = binaryStringToInt(s2);
printf("Pair #%d: ", caseNumber);
if(gcd(num1, num2) != 1){
printf("All you need is love!\n");
}
else{
printf("Love is not all you need!\n");
}
}
}
return 0;
}
[…] #UVa:10193-All You Need Is Love […]