学习参考参见:(https://blog.csdn.net/wyh7280/article/details/44963841)
一、问题描述:输入正整数n,找到所有的正整数x>=y,使得1/k=1/x+1/y。
样例输入:
2
12
样例输出:
2
1/2=1/6+1/3
1/2=1/4+1/4
8
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
二、知识点:
该题目在进行简单的枚举之前,先进行分析,通过缩放,先确定y的范围,再用等式求解出符合等式条件的x。
#include<stdio.h>
int main()
{
int count; //计数;
int x,y,k;
while(scanf("%d",&k)!=EOF)
{
count=0; //初始化归0;
//计数;
for(y=k+1;y<=2*k;y++)
if((k*y)%(y-k)==0) //等式成立;
count++;
printf("%d\n",count);
for(y=k+1;y<=2*k;y++)
if((k*y)%(y-k)==0)
{
x=(k*y)/(y-k);
printf("1/%d=1/%d+1/%d\n",k,x,y);
}
}
return 0;
}
四、运行结果
20210722-算法入门经典-P183-例7-3-分数拆分
原文:https://www.cnblogs.com/QQiAnn/p/15046390.html