zoukankan      html  css  js  c++  java
  • 最简真分数

    题目描述

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

    输入描述:

    每组包含n(n<=600)和n个不同的整数,整数大于1且小于等于1000。

    输出描述:

    每行输出最简真分数组合的个数。
    示例1

    输入

    7
    3 5 7 9 11 13 15
    

    输出

    17 

    思路分析

    本道题目的关键就是看 两个整数是否具有公约数,即是否为最简分数

    采用一个比较简洁的算法:欧几里得算法

    比较巧妙

    1 int gcd(int a, int b)//欧几里得算法求最大公约数
    2 {
    3     if(b==0) return a;
    4     else return gcd(b, a%b);
    5 }

    整个算法就变得很简单:

     1 int main()
     2 {
     3     int N;
     4     while(cin>>N)
     5     {
     6         int a[N];
     7         for(int i=0;i<N;i++)
     8         {
     9             cin>>a[i];
    10         }
    11         int count = 0;
    12         for(int i=0;i<N;i++)
    13             for(int j =0;j<N;j++)
    14             {
    15                 if(i==j) continue;
    16                 if(a[i]<a[j] && gcd(a[i],a[j])==1)
    17                     count++;
    18             }
    19         
    20         cout << count <<endl;
    21     }
    22 }
  • 相关阅读:
    win7如何配置access数据源
    pcA降维算法
    今天的分类
    实现MFC菜单画笔画圆,并且打钩
    多个字符串输出,竖直输出
    端口重用
    安卓快速关机APP
    端口转发
    学习OpenCV
    求解数独
  • 原文地址:https://www.cnblogs.com/jiashun/p/newcode19.html
Copyright © 2011-2022 走看看