# Number Theory# Brute Force# Fraction

d417 - 10976 - Fractions Again?!

🔗 前往 ZeroJudge 原題

題目描述

題目要求對於給定的正整數 k,找出所有滿足 1/k = 1/x + 1/y 且 x >= y 的正整數 x 和 y。

解題思路

題目要求找到所有滿足 1/k = 1/x + 1/y 的 x 和 y。可以將等式變形為 y = kx / (x - k)。由於 x 和 y 都是正整數,因此 x - k 必須是 k 的因數。 程式碼透過迴圈枚舉 x 的值,從 k+1 開始,直到 2k,然後檢查 kx / (x - k) 是否為整數。如果滿足條件,則輸出 x 和 y。

複雜度分析

  • 時間複雜度: O(k^2)
  • 空間複雜度: O(k)

程式碼

#include <stdio.h>
int niin[501][2];
inline void fd(int n){
	int total=0,ni=n*n+n,ii=1;
	for(int i=n+1;i<=n*2;++i,ni+=n,++ii)
		if(ni%ii==0){
			niin[total][0]=ni/ii;
			niin[total][1]=i;
			++total;
		}
	printf("%d\n",total);
	for(int i=0;i<total;++i)
		printf("1/%d = 1/%d + 1/%d\n",n,niin[i][0],niin[i][1]);
}
int main(){
	int n;
	while(scanf("%d",&n)>0)
		fd(n); 
}

Discussion