Description
参考(28条消息) SCAU 计算智能 暴力美学(三)_大头鸡的博客-优快云博客
输入正整数k(k<=1000),将1/k变为不少于2项,但不多于3项的1/(xi)之和,xi为正整数,且i表示序号 注:请使用long long
输入格式
多case,一行一个整数k 最后一行是0
输出格式
对每一个case,按等式最右边一项分母,由小到大排序输出满足条件的等式,最右边一项分母相同,则按最右边第二项,依次类推 每一个case完成后,输出一个空行(没有满足的等式时,也要输出该空行)
输入样例
2 3 4 0
输出样例
1/2=1/6+1/3 1/2=1/42+1/7+1/3 1/2=1/24+1/8+1/3 1/2=1/18+1/9+1/3 1/2=1/15+1/10+1/3 1/2=1/12+1/12+1/3 1/2=1/4+1/4 1/2=1/20+1/5+1/4 1/2=1/12+1/6+1/4 1/2=1/8+1/8+1/4 1/2=1/10+1/5+1/5 1/2=1/6+1/6+1/6 1/3=1/12+1/4 1/3=1/156+1/13+1/4 1/3=1/84+1/14+1/4 1/3=1/60+1/15+1/4 1/3=1/48+1/16+1/4 1/3=1/36+1/18+1/4 1/3=1/30+1/20+1/4 1/3=1/28+1/21+1/4 1/3=1/24+1/24+1/4 1/3=1/120+1/8+1/5 1/3=1/45+1/9+1/5 1/3=1/30+1/10+1/5 1/3=1/20+1/12+1/5 1/3=1/15+1/15+1/5 1/3=1/6+1/6 1/3=1/42+1/7+1/6 1/3=1/24+1/8+1/6 1/3=1/18+1/9+1/6 1/3=1/15+1/10+1/6 1/3=1/12+1/12+1/6 1/3=1/21+1/7+1/7 1/3=1/12+1/8+1/8 1/3=1/9+1/9+1/9 1/4=1/20+1/5 1/4=1/420+1/21+1/5 1/4=1/220+1/22+1/5 1/4=1/120+1/24+1/5 1/4=1/100+1/25+1/5 1/4=1/70+1/28+1/5 1/4=1/60+1/30+1/5 1/4=1/45+1/36+1/5 1/4=1/40+1/40+1/5 1/4=1/12+1/6 1/4=1/156+1/13+1/6 1/4=1/84+1/14+1/6 1/4=1/60+1/15+1/6 1/4=1/48+1/16+1/6 1/4=1/36+1/18+1/6 1/4=1/30+1/20+1/6 1/4=1/28+1/21+1/6 1/4=1/24+1/24+1/6 1/4=1/140+1/10+1/7 1/4=1/42+1/12+1/7 1/4=1/28+1/14+1/7 1/4=1/8+1/8 1/4=1/72+1/9+1/8 1/4=1/40+1/10+1/8 1/4=1/24+1/12+1/8 1/4=1/16+1/16+1/8 1/4=1/36+1/9+1/9 1/4=1/18+1/12+1/9 1/4=1/20+1/10+1/10 1/4=1/15+1/12+1/10 1/4=1/12+1/12+1/12
分析:
枚举x,y,z。
z从k+1到3*k。
拆成两项z要特判,z<=2*k。
中间项p
y=p+1到2*p+1
拆成3项y要特判,y>=z
注意%lld
#include<stdio.h>
typedef long long ll;
int main() {
ll k;
while(scanf("%lld",&k)&&k){
ll x,y,z,p;
for(z=k+1;z<=3*k;++z){
p=z*k/(z-k);
if(z<=2*k&&z*k%(z-k)==0){
printf("1/%lld=1/%lld+1/%lld\n",k,p,z);
}
ll t1=z*k;
ll t2=z-k;
for(y=p+1;y<=2*p+1;++y){
x=t1*y/(t2*y-t1);
if(y>=z&&t1*y%(t2*y-t1)==0){
printf("1/%lld=1/%lld+1/%lld+1/%lld\n",k,x,y,z);
}
}
}
printf("\n");
}
return 0;
}