某人拿着100块钱去买鸡,公鸡5元一只,母鸡3元一只,小鸡1元三只。
要求:正好花完100元,买100只鸡。
问:公鸡该买多少只,母鸡该买多少只,小鸡该买多少只?要求用Java实现,第一要求有没有实现,第二要求算法的优化。认为自己能做来的,或者已经做出来的,或者准备去做的,请加我们的群:
我的工具Java[2] 群号码 34317592
我的工具Java[3] 群号码 2575657
我的工具Java[4] 群号码 38366490
我的工具Java[5] 群号码 38366664
我的工具Java[6] 群号码 38366732
我的工具Java[7] 群号码 14061272帮助刚踏上JAVA之路的人,解决各种问题;帮助正在升级中的人,在这里你可以见到一些常见或者不常见的刁难问题,得到学习;帮助自认为是高手的人,并非所有问题你都能解决,或者某一个菜鸟在某个方面比你强;真正的高手喜欢帮助人,在这里你得以发挥。每个人限加一个群,建议按顺序来加,如果已满按次序加下一个。
public class baibai
{
public static void main(String args[])
{
for (int i=1;i<20;i++)
for(int j=1;j<33;j++)
{
int k;
k=100-i-j;
if (k%3==0)
if (5*i+3*j+k/3==100)
System.out.println("gongji="+i+"muji="+j+"xiaojia="+k);
}
}
}
public static void main(String args[]) {
for (int i = 1; i < 33; i++)
for (int j = 1; j <20 ; j++) {
int k;
k = 100 - i - j;
if (k % 3 == 0)
if (5 * j + 3 * i + k / 3 == 100)
System.out.println("gongji=" + j + "muji=" + i
+ "xiaojia=" + k);
}
}
}
5x+3y+z/3=100->
y+7z/3=200
{
public static void main(String args[])
{
for (int i=1;i<20;i++)
for(int j=1;j<33;j++)
{
int k;
k=100-i-j;
if (k%3==0)
if (5*i+3*j+k/3==100)
System.out.println("gongji="+i+"muji="+j+"xiaojia="+k);
}
}
}
{
public static void main(String args[])
{
for (int i=1;i<20;i++)
for(int j=1;j<33;j++)
{
int k=(100-i-j)*3;
if (k>0&&5*i+3*j+k==100)
System.out.println("公鸡="+i+",母鸡="+j+"小鸡="+k);
}
}
}
要求:正好花完100元,买100只鸡。
问:公鸡该买多少只,母鸡该买多少只,小鸡该买多少只?
=============================================================
推理一下吧:
100元:100只 = 1:1
=>(公+母+小)钱/只 = 1/1
=>公:母:小(只) = 3:5:15 (最小公倍数)
由于(3+5+15)*X = 100(只)该公式不成立 => 公母小三者不能同时存在
这样我们就三选二:
(3+5)*X = 100 不成立 => 公和母 不存在
(3+15)*X = 100 不成立 => 公和小 不存在
(5+15)*X = 100 X为5时成立 => 母和小 存在
验证:
母:5*5=25只 25*3=75元
小:15*5=75只 75*1/3=25元
总钱数=100,总只数=100
{
public static void main(String[] args)
{
private int cock = 0;
private int hen = 0;
private int chicken = 0; for(int icock = 0;icock<=20;icock++)
{
for(int ihen=0;ihen<=33;ihen++)
{
for(int ichicken = 0;ichicken<=300;ichicken++)
{
if(ichicken%3!=0)
{
continue;
}
if(icock+ihen+ichicken==100&&icock*5+ihen*3+(int)ichicken/3==100)
{
cock = icock;
hen = ihen;
chicken = ichicken;
System.out.println("cock="+cock+";hen="+hen+";chicken"+chicken);
int sum = cock+hen+chicken;
System.out.println("sum="+sum); }
continue;
}
} }
}
}
某人拿着100块钱去买鸡,公鸡5元一只,母鸡3元一只,小鸡1元三只。
要求:正好花完100元,买100只鸡。
问:公鸡该买多少只,母鸡该买多少只,小鸡该买多少只?
=============================================================
推理一下吧:
100元:100只 = 1:1
=>(公+母+小)钱/只 = 1/1
=>公:母:小(只) = 3:5:15 (最小公倍数) ***-> 请问这是什么逻辑??谁规定每样花的钱一样多啊
由于(3+5+15)*X = 100(只)该公式不成立 => 公母小三者不能同时存在
这样我们就三选二:
(3+5)*X = 100 不成立 => 公和母 不存在
(3+15)*X = 100 不成立 => 公和小 不存在
(5+15)*X = 100 X为5时成立 => 母和小 存在
验证:
母:5*5=25只 25*3=75元
小:15*5=75只 75*1/3=25元
总钱数=100,总只数=100反证:
<
公8母11小81
8+11+81=100
8*5+11*3+81/3
=40+33+27
=100
>
5x+3y+z/3=100
->
7x+4y=100
->
要同时取整数,易见(0,25)-〉(0,25,75)为一解
7*4=28
->第二解(0+4,25-7)->(4,18,78)
->第三解(4+4,18-7)->(8,11,81)
->第四解(8+4,11-7)->(12,4,84)
->出现负数...
public static void main(String[] args) {
int xiaoJ = 0, muJ, gongJ, i = 1;
for (gongJ = 0; gongJ <= 20; gongJ++) {
for (muJ = 0; muJ <= 33; muJ++) {
xiaoJ = 100 - gongJ - muJ;
if (xiaoJ % 3 == 0) {
if (xiaoJ / 3 + muJ * 3 + gongJ * 5 == 100) {
System.out.println("第" + i + "种答案");
i++;
System.out.println("小鸡:" + xiaoJ + "只 母鸡:" + muJ + "只 公鸡:" + gongJ+"只");
}
}
}
}
}
}
运行结果:第1种答案
小鸡:75只 母鸡:25只 公鸡:0只
第2种答案
小鸡:78只 母鸡:18只 公鸡:4只
第3种答案
小鸡:81只 母鸡:11只 公鸡:8只
第4种答案
小鸡:84只 母鸡:4只 公鸡:12只
Practice(){
for(int i=0;i<21;i++){
for(int j=0;j<34;j++){
for(int a=0;a<301;a++){
int b=5*i+3*j+a/3;
int c=i+j+a;
if(b==100&&c==100 ){
System.out.println(i);
System.out.println(j);
System.out.println(a);
System.out.println("=====================================");
}
}
}
}
}
public static void main(String args[]){
new Practice();
}
}
public static void main(String args[]) {
int i=0,j=0;//i 小鸡 , j 母鸡 , 100-i-j 公鸡
for(i=0;i<=100;i+=3)//先算小鸡可以步长为3
for(j=0;j<=100-i;j++){
if(i/3+j*3+(100-i-j)*5==100) {
System.out.println("公鸡:"+(100-i-j)+"母鸡:"+j+"小鸡:"+i);
}
}
}
}
C:\java>java Chicken
公鸡:0母鸡:25小鸡:75
公鸡:4母鸡:18小鸡:78
公鸡:8母鸡:11小鸡:81
公鸡:12母鸡:4小鸡:84
{
int x,z;
//设公鸡数量X,母鸡数量Y,小鸡数量Z
//联立方程得到Y=25-7/4X;
//所以,为了让Y得到整数,则必须使得X可以整除4,
//并且要让Y>=0,则应该X=12,8,4,0;
//对应的Y=4,11,18,25;
//对应Z=84,81,78,75;
}
//汗一个。本来想写完注释开始写程序,想不到注释写完就有结果了汗汗。
我的工具Java[1] 群号码 8622206 目前人数:快满
我的工具Java[2] 群号码 34317592 目前人数:100(已满)
我的工具Java[3] 群号码 2575657
我的工具Java[4] 群号码 38366490 目前人数:100(已满)
我的工具Java[5] 群号码 38366664
我的工具Java[6] 群号码:38366732
我的工具Java[7] 群号码 14061272 由于人数不断增加 又添加3个群
我的工具Java[8] 缺管理员 群号码 16183902
我的工具Java[9] 缺管理员 群号码:38545283
我的工具Java[10] 缺管理员 群号码 5952964
http://wodegongju.com/bbs/Show.Asp?ID=140此贴在更新
for(int i=1;i<99;i++)
for(int j=1;j<99;j++)
for(int k=1;k<99;k++)
if(i+j+k)==100
if(i*15+j*9+k==300)
{
System.out.prin("公鸡"+i+"只,");
System.out.prin("母鸡"+i+"只,");
System.out.println();
int cock = 0, hen = 5, chick; while(hen > 4){
hen = 25 - (cock / 4) * 7;
chick = 100 - cock - hen;
System.out.println("买公鸡:" + cock + ",买母鸡:" + hen + ",买小鸡:" + chick);
cock += 4;
}
}这样,只需要循环4次就可以得出结果,确实是一个很好的算法。
设,公:a,母:b,小c。
有方程:
a + b + c = 100
5a + 3b + c/3 = 100
化简有:7a + 4b = 100
可得:a为4的倍数
设a = 4k,得到7k + b = 25
得看出:k>=0 && k<4
可以编程了:
int a,b,c;
for(int i=0;i<4;i+){
a = 4*i;
b = 25-7*i;
c = 100 -a -b;
System.out.println(a+" "+b+" "+c);
}这电脑没有编写JAVA的环境,简单写写
<script>
for(k=0;k<4;k++){
a = 4*k;
b = 25-7*k;
c = 100 - a - b;
document.write("g: "+ a + "m: " + b + "x: " + c + "</br>");
}
</script>
要求:正好花完100元,买100只鸡。
问:公鸡该买多少只,母鸡该买多少只,小鸡该买多少只?
=============================================================
推理一下吧:
100元:100只 = 1:1
=>(公+母+小)钱/只 = 1/1
=>公:母:小(只) = 3:5:15 (最小公倍数)
由于(3+5+15)*X = 100(只)该公式不成立 => 公母小三者不能同时存在
这样我们就三选二:
(3+5)*X = 100 不成立 => 公和母 不存在
(3+15)*X = 100 不成立 => 公和小 不存在
(5+15)*X = 100 X为5时成立 => 母和小 存在
验证:
母:5*5=25只 25*3=75元
小:15*5=75只 75*1/3=25元
总钱数=100,总只数=100
不错
{
public static void main(String args[])
{
for (int i=1;i<20;i++)
for(int j=1;j<33;j++)
{
int k;
k=100-i-j;
if (k%3==0)
if (5*i+3*j+k/3==100)
System.out.println("公鸡="+i+"母鸡="+j+"x小鸡="+k);
}
}
}
// TODO 自动生成方法存根
for(int x=1;x<15;x++){
for(int y=1;y<25;y++){
int z=100-x-y;
if((5*x+3*y+z/3)==100){
System.out.println("公鸡:"+x+" 母鸡:"+y+" 小鸡:"+z);
}
}
} }}
public static void main(String[] args){
for (int i=0;i<50;i++){
for (int j=0;j<50;j++){
if (((i*5+j*3+(100-i-j)/3)==100)&&((100-i-j)%3==0)){
System.out.println(i);
System.out.println(j);
System.out.println(100-i-j);
}
}
}
}
}
http://www.baidu.com/s?wd=%B0%D9%C7%AE%B0%D9%BC%A6&cl=3
谷歌
http://www.google.cn/search?complete=1&hl=zh-CN&q=%E7%99%BE%E9%92%B1%E7%99%BE%E9%B8%A1&meta=
// TODO Auto-generated method stub
BuyChicken t= new BuyChicken();
for(float i=0; 7*i<100; ){
Hashtable ret_hs = t.computBuy(i);
String a = (String)ret_hs.get("a");
String b = (String)ret_hs.get("b");
String c = (String)ret_hs.get("c");
System.out.println("gongji = " + a + " muji = " + b + " xiaoji = " + c);
i += 4;
} } public Hashtable computBuy(float i){
Hashtable ret_hs = new Hashtable();
int a=0, b=0, c=0;
//5, 3, 1/3, 100yuan
//15*a + 9*b + c = 300
//a + b + c + 100
//14*a + 8*b = 200
//7*a + 4*b = 100
b = (int)((100 - 7*i)/4);
a = (int)i;
c = 100 - b - a;
if(c % 3 == 0){
ret_hs.put("a", String.valueOf(a));
ret_hs.put("b", String.valueOf(b));
ret_hs.put("c", String.valueOf(c));
}
return ret_hs;
}
}
private int a1,b1,c1;
public static void main(String[] args)
{
JiShu mm = new JiShu();
mm.go();
}
public void go()
{ for(int a1=0; a1<=100;a1++)
{for(int b1=0; b1<=100;b1++)
{if((100 == a1+a2+a3)&&(300 == 15*a1 + 9*b1 + c1)) System.out.printf("%d,%d,%d",a1,b1,c1);
} }
}
}
//要求:正好花完100元,买100只鸡。
//问:公鸡该买多少只,母鸡该买多少只,小鸡该买多少只?
package jiji;
import java.*;
public class baiji
{
public static void main(String []args)
{
for(int a=1;a<=20;a++)
for(int b=1;b<=33;b++)
{
int c;
c=100-a-b;
if(c%3==0)
if(5*a+3*b+c/3==100)
System.out.println("gongji="+a+"muji="+b+"xiaoji="+c);
}
}
}
运行结果为:
gongji4muji18xiaoji78
gongji8muji11xiaoji81
gongji12muji4xiaoji84
Press any key to continue...
public static void main(String args[]){
for (int x = 0 ; x <= 20 ; x ++){
for ( int y = 0; y <= 100 - 5 * x; y++)
for (int z = 0 ; z <= 3 * (100 - 5 * x - 3 * y);z++){
if (x + y + z == 100 && 5 * x +
3 * y + z /3 == 100 && z%3==0)
System.out.println("gongji"+ x +"muji"+ y +"xiaoji"+ z );
}
}
}
}