1.百僧吃百馍
有大和尚和小和尚共一百人和馍100个,一个大和尚要吃三个馍,三个小和尚吃一个馍,问大和尚和小和尚人数分别为多少?
用i表示大和尚人数,j表示小和尚人数.有i+j=100.并且小和尚人数要能整除3.不能出现0.几个人
代码如下:
public class Eat {
public static void main(String[] args) {
//百僧吃百膜
int Sum=100;
for(int i=0;i<=100;i++){//i代表大和尚的人数
for (int j=100-i;j<=100;j++)
{
if (j%3!=0)break;//如果j不能整除3,退出本次循环
if((i*3+j/3)==Sum){
System.out.println("大和尚人数为:"+i+"人,小和尚人数为:"+j+"人。");
}
}//用j表示小和尚人数
}//用i表示大和尚的人数
}
}
2.水仙花数
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。例如,一个 3 位数 153 就是一个水仙花数,因为 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153。编写一个程序来打印所有的水仙花数。
public class ShuiXianHua {
public static void main(String[] args) {
for(int i=100;i<1000;i++){
int num=i,j=0;
int[] _num=new int[3];
while (num!=0)
{
_num[j++]=num%10;
num/=10;
}
if (_num[0]*_num[0]*_num[0]+_num[1]*_num[1]*_num[1]+_num[2]*_num[2]*_num[2]==i) System.out.println(i);
}
}
}
3.猴子吃桃问题。
问题描述如下:有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个;以后每天猴子都吃其中的一半,并再多吃一个。到第十天时,想再吃时(还没吃),发现只有一个桃子了。求原来有多少个桃子。
反过来求用第十天的桃子+1在乘以2就等于第九天的桃子
因为第十天没吃桃,所以只吃了九天
public class MonkeyEatPeach {
public static void main(String[] args) {
//猴子吃桃 一堆桃,第一天,猴子吃其中的一半多一个,第二天吃其中剩下的一半多一个,以此类推到第十天剩下一桃子,原先有多少桃?
int sum=1;//第十天剩下一个
//每天多吃一半多一个
for (int i=1;i<=9;i++){//吃了九天 所以i=9 第十天还没吃 发现只剩一个了
sum=(sum+1)*2;
}
System.out.println("原先有桃:"+sum+"个。");
}
}
4.斐波那契数列
斐波那契数列是由 0 和 1 开始,后面的每一项数字都是前两项数字的和。换句话说,第 n 个数字是第 n-1 个数字和第 n-2 个数字的和。数学上,斐波那契数列可以定义为如下形式:F(n)=F(N-1)+F(N-2)(N>2)
该程序采用了递归的方法
public class FibonacciSeq {
public static int Fibonacci(int n){
if(n==1||n==2){return 1;}
else {
return Fibonacci(n-1)+Fibonacci(n-2);
}
}
public static void main(String[] args) {
//斐波那契数列: 1 1 2 3 5 8 13...
//特点:从第三项开始 每一项都为前两项的和
//输出十个斐波那契数列
for(int i=1;i<=10;i++){
System.out.print(Fibonacci(i)+" ");
}
}
}
这几个循环在面试中也有极大的可能会问到,需要牢固掌握。