UVa 10193 All You Need Is Love 求互质 数学题
来源:互联网 发布:矩阵qr分解例题 编辑:程序博客网 时间:2024/04/30 15:38
/*** 题意: 给你两个01字符串, 表示两个由二进制表示的数* 问能否找到一个01串同时是这两个串的因数,不能是1.* 简单数学题,求两数是否互质。* 先把输入的两个01串换成十进制的数。* 再求这两个数的公约数就行了。* 如果公约数是1,也就是互质,答案就是not you need* 反之。。。*/#include <cstdio>#include <cstring>#include <cmath>#include <stack>#include <string>#include <queue>#include <map>#include <algorithm>#define INF 0x7fffffffusing namespace std;char str1[31], str2[31];/* 求最大公约数. */int gcd(int a, int b) { if(b == 0) return a; return gcd(b, a % b);}/* 将字符串转换成数组. */int parse(char *str) { int len = strlen(str); int sum = 0; for(int i = 0; i < len; i ++) { sum += (str[i] - '0') * pow(2, len - i - 1); } return sum;}int main(){ int cases; scanf("%d", &cases); for(int curCase = 1; curCase <= cases; curCase ++) { printf("Pair #%d: ", curCase); int dec1, dec2; scanf("%s%s", str1, str2); dec1 = parse(str1); dec2 = parse(str2); if(dec1 < dec2) swap(dec1, dec2); if(gcd(dec1, dec2) != 1) printf("All you need is love!\n"); else printf("Love is not all you need!\n"); } return 0;}