总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
给出n个正整数,任取两个数分别作为分子和分母组成最简真分数,编程求共有几个这样的组合。
输入
-
第一行是一个正整数n(n<=600)。
第二行是n个不同的整数,相邻两个整数之间用单个空格隔开。整数大于1且小于等于1000。
输出
- 一个整数,即最简真分数组合的个数。 样例输入
-
7 3 5 7 9 11 13 15
样例输出
17
-
本题我使用的主要方法是碾转相除,又用到了两个函数(一个为最简分数的判断,一个为真分数的判断),下面附上ac代码。若有更好的解题思路欢迎提建议。
-
#include<stdio.h> int zf(int n,int m) { int temp; while(n!=0) { temp=m%n; m=n; n=temp; } return m; } double fs(int n,int m) { return (double)n/m; } int main() { int n,i,j,a[10000]={0},t=0,m; scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&a[i]); for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(zf(a[i],a[j])==1&&fs(a[i],a[j])<1) t++; printf("%d",t); return 0; }