分數拆分問題
阿新 • • 發佈:2019-01-05
輸入正整數 k,找到所有的正整數x≥y,使得
樣例輸入:
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; }