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;}

原创粉丝点击