Fractions Again?!(簡單列舉)
阿新 • • 發佈:2019-01-06
Fractions Again?!
It is easy to see that for every fraction in the form 1/k (k > 0), we can always find two positive integers x and y, x >= y, such that:.
Now our question is: can you write a program that counts how many such pairs of x and y there are for any given k?
Input
Input contains no more than 100 lines, each giving a value of k (0 < k <= 10000).Output
For each k, output the number of corresponding (x, y) pairs, followed by a sorted list of the values of x and y, as shown in the sample output.Sample Input
212
Sample Output
21/2 = 1/6 + 1/3
1/2 = 1/4 + 1/4
8
1/12 = 1/156 + 1/13
1/12 = 1/84 + 1/14
1/12 = 1/60 + 1/15
1/12 = 1/48 + 1/16
1/12 = 1/36 + 1/18
1/12 = 1/30 + 1/20
1/12 = 1/28 + 1/21
1/12 = 1/24 + 1/24
/// 1/n = 1/x + 1/y ==> n*y + n*x = x*y; ///y只需要從n+1列舉到2*n即可,此時x = n*y / (y-n); #include<stdio.h> #include<string.h> int main() { int n,i,p,num; int a[10000],b[10000]; while(~scanf("%d",&n)) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); num=0; for(i=n+1; i<=n*2; i++) { if(n*i%(i-n))continue; p=n*i/(i-n); a[num]=p; b[num]=i; num++; } printf("%d\n",num); for(i=0; i<num; i++) printf("1/%d = 1/%d + 1/%d\n",n,a[i],b[i]); } }