• 18444 分数拆分


    Description

    参考(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

    1. #include
    2. typedef long long ll;
    3. int main() {
    4. ll k;
    5. while(scanf("%lld",&k)&&k){
    6. ll x,y,z,p;
    7. for(z=k+1;z<=3*k;++z){
    8. p=z*k/(z-k);
    9. if(z<=2*k&&z*k%(z-k)==0){
    10. printf("1/%lld=1/%lld+1/%lld\n",k,p,z);
    11. }
    12. ll t1=z*k;
    13. ll t2=z-k;
    14. for(y=p+1;y<=2*p+1;++y){
    15. x=t1*y/(t2*y-t1);
    16. if(y>=z&&t1*y%(t2*y-t1)==0){
    17. printf("1/%lld=1/%lld+1/%lld+1/%lld\n",k,x,y,z);
    18. }
    19. }
    20. }
    21. printf("\n");
    22. }
    23. return 0;
    24. }

  • 相关阅读:
    STM32 USB虚拟串口
    【python基础】复杂数据类型-字典(增删改查)
    【微服务】部署mysql集群,主从复制,读写分离
    英语语法基础
    LVGL v8学习笔记 | 06 - label控件的使用方法
    如何去掉css 渐变时的锯齿效果
    软件外包团队的人员构成
    Flutter实战-请求封装(六)之设置抓包Proxy
    模拟实现memcpy memmove,字符类库函数的介绍,strerror,strtok的使用讲解。
    深度学习推理框架
  • 原文地址:https://blog.csdn.net/weixin_73094970/article/details/130892782