給出n個正整數,任取兩個數分別作為分子和分母組成最簡真分數,編程求共有幾個這樣的組合。
輸入第一行是一個正整數n(n<=600)。第二行是n個不同的整數,相鄰兩個整數之間用單個空格隔開。整數大于1且小于等于1000。輸出一個整數,即最簡真分數組合的個數。樣例輸入73 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;}
新聞熱點
疑難解答