首页 > 试题广场 >

百鸡问题

[编程题]百鸡问题
  • 热度指数:45759 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
    用小于等于n元去买100只鸡,大鸡5元/只,小鸡3元/只,还有1/3元每只的一种小鸡,分别记为x只,y只,z只。编程求解x,y,z所有可能解。
(本题没有测试数据,
int main(){}
就能通过
真·本地过了就是过了)


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


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

输入

40

输出

x=0,y=0,z=100
x=0,y=1,z=99
x=0,y=2,z=98
x=1,y=0,z=99
import java.util.*;

public class Main{

    public static void main(String[] args){
         Scanner scanner=new Scanner(System.in);
         int n=scanner.nextInt();
            
         int x,y,z=0;
         for(x=0;x<=100;x++){
             for(y=0;y<=100;y++){
                  for(z=0;z<=100;z++){
                      if((x+y+z)==100){
                         float sum=5*x+3*y+(float)z/3;
                         if(sum<=n){
                         System.out.println("x="+x+",y="+y+",z="+z);
                         }
                  }
                 
             }
         }
         }
         
    
    
    }

}
发表于 2022-02-24 15:04:52 回复(0)
Java 解法一:
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        for (int x = 0; x < 101; x++) {
            for (int y = 0; y < 101; y++) {
                for (int z = 0; z < 101; z++) {
                    if (x+y+z==100&&x*5+y*3+z/3<=n)
                        System.out.println("x="+x+",y="+y+",z="+z);
                }
            }
        }
    }
}

解法二
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        for (int x = 0; x <= 100; x++) {
            for (int y = 0; y <= 100-x; y++) {
                int z=100 -y-x;
                if (x*5+y*3+z/3<=n)
                    System.out.println("x="+x+",y="+y+",z="+z);
            }
        }
    }
}



发表于 2020-03-06 12:05:09 回复(0)
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        double x=5,y=3,z=1/3;
        int i,j,k;
        for(i=0; i<n/5;i++){
            for(j=100-i;j<(n-5*i)/3;j++){
                for(k=100-i-j;k<(n-5*i-3*j)*3;k++){
                    if((i+j+k)==100){
                        System.out.println("x="+i+",y="+j+",z="+k);
                    }
                }
            }
        }
    }
}

发表于 2018-08-03 15:02:25 回复(0)

已经AC

本题的测试用例是不是漏了个答案?

我自己跑出来的结果还有个

x=1,y=1,z=98

代码不贴了,无脑循环加个判定条件而已,[允悲]

发表于 2018-05-13 17:57:29 回复(3)

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int n = in.nextInt();
    int x,y,z; 
    for(x=0; x<=100; x++) {
        for(y=0; y<=100; y++) {
            for(z=0; z<=100; z++) {
                if(x+y+z==100 && 5*x+3*y+z/3<=n) {
                    System.out.println("x="+x+",y="+y+",z="+z);
                }
            }
        }
    }
}

}

编辑于 2018-03-17 13:12:37 回复(0)