当前位置: 代码迷 >> 综合 >> UVa - 10976 - Fractions Again?!(暴力求解枚举)
  详细解决方案

UVa - 10976 - Fractions Again?!(暴力求解枚举)

热度:53   发布时间:2023-10-09 18:10:10.0

UVa - 10976 - Fractions Again?!(暴力求解枚举)

1/k = 1/x + 1/y

从输出实例中可以看出 x>=y,那么 1/x <= 1/y  、1/k >= 1/y + 1/y  、1/k >= 2/y 从而得到y的范围  y<=2*k  其中y>=k+1;那么就可以在[k+1, 2*k]中枚举y的大小,来查找符合要求的x,从而得到需要的结果。

#include<iostream>
#include<cstdio>
using namespace std;
double k,x,y;int main(){while(cin>>k){int count = 0;for(int i=k+1 ;i<=2*k ;i++){y = i;x = k*y/(y-k);if((int)x==x){count++;}}cout<<count<<endl;for(int i=k+1 ;i<=2*k ;i++){y = i;x = k*y/(y-k);//符合要求 if((int)x==x){printf("1/%.0lf = 1/%.0lf + 1/%.0lf\n",k,x,y);}}	}return 0;
}