参考(28条消息) SCAU 计算智能 暴力美学(三)_大头鸡的博客-CSDN博客
输入正整数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
-
- 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;
- }