zoukankan      html  css  js  c++  java
  • 百鸡问题

    题目描述

        用小于等于n元去买100只鸡,大鸡5元/只,小鸡3元/只,还有1/3元每只的一种小鸡,分别记为x只,y只,z只。编程求解x,y,z所有可能解。

    输入描述:

        测试数据有多组,输入n。

    输出描述:

        对于每组输入,请输出x,y,z所有可行解,按照x,y,z依次增大的顺序输出。
    示例1

    输入

    复制
    40
    

    输出

    复制
    x=0,y=0,z=100
    x=0,y=1,z=99
    #include<iostream>
    using namespace std;
    int main()
    {
        int n;//钱数
        int i,j,k;
        while(cin>>n)
        {
            int x = 3*n<100?3*n:100;
            //cout<<x<<endl;
            for( i=0;i<=n/5;i++)
            {
                
                for( j=0;j<=(n-5*i)/3;j++)//关键
                {
                    
                    for( k=x;k>=98;k--)
                    {
                        if(5*i+3*j+k/3>n)
                             continue;
                        double z = (double)k;
                        if(i+j+k==100&&5*i+3*j+z/3<=n)
                            cout<<"x="<<i<<",y="<<j<<",z="<<k<<endl;
                        
                    }              
                }            
            }
        }
        return 0;
    }

    总结:之前用三重循环,一直超时,将第二重循环的判断条件稍加修改,使得代码优化,通过;看网上另z=100-i-j,即可免去第三重循环!!

  • 相关阅读:
    20201107
    20201024
    20201020
    20200331
    20200330
    20200320
    20200319
    20200310
    20200221
    20190926
  • 原文地址:https://www.cnblogs.com/ttzz/p/10338315.html
Copyright © 2011-2022 走看看