for循环解决实际问题
问题1
大马驮2石粮食,中马驮1石粮食,两头小马驮一石粮食,要用100匹马,驮100石粮食,该如何调配?
算法
假设需要大马a匹,中马b匹,小马c匹
a+b+c=100 2a+b+c/2=100
0<=a<=50 0<=b<=100 0<=c<=100(不能大于100,总量是100);
如果只用大马最多需要50匹
如果只用中马最多需要100匹
如果只用小马最多需要100匹
var cout = 0;
for (var a = 1; a <= 50; a++) {
for (var b = 1; b <= 100; b++) {
var c = 100 - a - b;
if ((a + b + c == 100) && (2 * a + b + c / 2 == 100)) {
document.write("大马:" + a + "中马:" + b + "小马" + c + "<hr />");
cout++;
}
}
}
声明一个变量cout用来记录一共可以有多少种方法
当满足条件时,cout每次会自增1
问题2
小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元整好花掉,可如有哪些购买结合?
算法
假设洗发水a瓶 ,香皂b个,牙刷c个
如果只买洗发水,则最多可以买6瓶
如果只买香皂,则最多可以买50个
如果只买牙刷,则最多可以买20个
for(var a=1; a<=6; a++){
for(var b=1; b<=50; b++){
for(var c=1; c<=20; c++){
if(15*a+2*b+5*c==100){
document.write("洗发水:" + a + " " + "香皂:" + b + " " + "牙刷:" + c + "<hr />");
}
}
}
}
问题3
打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。
153就是一个水仙花数
算法
要想判断是不是水仙花数,首先就要获取个位、十位、百位上的数
153=1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3
for(var i=100; i<1000; i++){
var a=parseInt(i%10); //个
var b=parseInt((i/10)%10); //十
var c=parseInt(i/100); //百
if(a*a*a+b*b*b+c*c*c==i){
document.write("水仙花数:" + i + "<hr />");
}
}
问题四
公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?
算法
反推法:
[由最后一天往前一直推导]
最后一天剩下一个桃子
假设公园刚开始有 x 个桃子 第七天只剩1个桃子
第六天有(1+1)*2 = 4
以此类推
var peach = 1;
for(var i=1; i<=6; i++){
peach = (peach+1)*2;
}
document.write("公园里一共有" + peach + "个桃子");
答案:一共有190个桃子
上一篇: vdbench安装及使用
下一篇: 【运维笔记】ceph