Bienvenido a visitar mi directorio de solución de problemas de Uva https://blog.csdn.net/richenyunqi/article/details/81149109
Descripción del Título
Interpretación
Ingrese un número entero positivo k y encuentre todos los números enteros positivos x ≥ yx≥yX≥y,使得 1 k = 1 x + 1 y \frac{1}{k}=\frac{1}{x}+\frac{1}{y} k1=X1+y1
diseño de algoritmos
Obviamente, cuando x ≥ yx≥yX≥y , el rango de y esy ∈ [k + 1, ky∈[ k+1 ,k+k ] , simplemente enumere y, si1 k - 1 y \ frac {1} {k} - \ frac {1} {y}k1-y1El numerador de se puede simplificar a 1, es decir, el numerador puede dividir el denominador, y se encuentra un conjunto de xey que cumplen las condiciones.
Código C ++
#include <bits/stdc++.h>
using namespace std;
int main() {
int k;
while(cin>>k){
vector<pair<int,int>>v;
for(int i=k+1;i<=k+k;++i)
if(i*k%(i-k)==0)//分母对分子的余数为0
v.push_back({
i*k/(i-k),i});//找到了一组满足条件的x与y
printf("%d\n",v.size());
for(auto&i:v)
printf("1/%d = 1/%d + 1/%d\n",k,i.first,i.second);
}
return 0;
}