1. 程式人生 > >分數拆分問題

分數拆分問題

輸入正整數 k,找到所有的正整數xy,使得

樣例輸入

2

12

樣例輸出:

1/2=1/3+1/6

1/2=1/4+1/4

  2

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

  8


解:

使用暴力列舉,因為題目中規定x>=y,所以很容易確定x的取值範圍:k+1=<x<=2*k;所以假設等式成立,求得y的值,帶入原公式中如果滿足,則輸出等式,否則繼續迴圈。

#include<stdio.h>

int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		int x,y,count;
		count = 0;
		for(x=n+1;x<=2*n;x++){
			y=(n*x)/(x-n);
			if(n*(x+y)==x*y)
			{
				count++;
				printf("1/%d=1/%d+1/%d\n",n,x,y);
			}
		} 
		printf("%d\n",count);
	}
	return 0;	
}