首页 > 其他 > 详细

九度 1465:最简真分数

时间:2014-03-08 14:28:42      阅读:566      评论:0      收藏:0      [点我收藏+]

题目描述:

给出n个正整数,任取两个数分别作为分子和分母组成最简真分数,编程求共有几个这样的组合。

 

思路

1. 题目考察的是 GCD

 

代码

bubuko.com,布布扣
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;

int numbers[700];

int gcd(int x, int y) {
    if(x == 1 || y == 1)
        return 1;
    if(x == y)
        return x;

    if(x < y)
        swap(x, y);

    if(x&1 == 1) {
        if(y&1 == 1)
            return gcd(x-y, y);
        else
            return gcd(x, y/2); 
    }else {
        if(y&1 == 1)
            return gcd(x/2, y);
        else
            return 2*gcd(x/2, y/2);
    }
}

int main() {
    int n;
    while(scanf("%d", &n) != EOF && n != 0) {
        for(int i = 0; i < n; i ++)
            scanf("%d", numbers+i);

        sort(numbers, numbers + n);

        int cnt = 0;
        for(int i = 0; i < n; i ++) {
            for(int j = i+1; j < n; j ++)
                if(gcd(numbers[i], numbers[j]) == 1)
                    cnt ++;
        }
        cout << cnt << endl;
    }
    return 0;
}
bubuko.com,布布扣

九度 1465:最简真分数,布布扣,bubuko.com

九度 1465:最简真分数

原文:http://www.cnblogs.com/xinsheng/p/3587097.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!