java经典50道_50道经典的JAVA编程题(41-45)
50道經(jīng)典的JAVA編程題(41-45),苦逼的程序猿,晚上睡不著了編程吧~今天堅持做10道題!發(fā)現(xiàn)編程能是我快樂。。。O(∩_∩)O哈哈~能平靜我煩亂的心,剩下5道題留到考試完了再做吧!該睡覺了、、、
【程序41】 MonkeyPeach.java
題目:海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據(jù)分為五份,多了一個,這只猴子把多的一
個扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中
,拿走了一份,第三、第四、第五只猴子都是這樣做的,問海灘上原來最少有多少個桃子?
注: 遞歸得到還沒拿桃子時的桃子數(shù),每次得到的值必須是整數(shù)
javapackage test50;
/**
* @author VellBibi
*【程序41】 MonkeyPeach.java
*題目:海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據(jù)分為五份,多了一個,這只猴子把多的一
*個扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中
*,拿走了一份,第三、第四、第五只猴子都是這樣做的,問海灘上原來最少有多少個桃子?
*/
public class MonkeyPeach {
/**
* 獲得第n個猴子還沒拿桃子時的桃子數(shù)
* 最后一個猴子拿了m個桃子
* @param n
* @param m
* @return
*/
public static int getNum(int n, int m){
if(n > 5) return m*4;
else {
double ans = getNum(n+1, m) / 4.0 * 5 + 1;
if(ans%1 != 0.0 || ans == 1){//判斷結(jié)果是否為整數(shù),或者結(jié)果不為1
return 0;
}else
return (int)ans;
}
}
public static void main(String[] args) {
int ans = 0;
for(int i=1; ; i++){
ans = getNum(1, i);
if(ans != 0){
System.out.println("當(dāng)最后一只猴子拿走" + i + "個桃子時,海灘上原來桃子得到最小值為:");
System.out.println(ans);
break;
}
}
}
}
反推數(shù)據(jù):(驗證結(jié)果是正確的)
感覺上面的實現(xiàn)方案有點小題大做了,要是直接驗證結(jié)果的話會更快的得到答案,看代碼:
javapackage test50;
/**
* @author VellBibi
*【程序41】 MonkeyPeach_1.java
*題目:海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據(jù)分為五份,多了一個,這只猴子把多的一
*個扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中
*,拿走了一份,第三、第四、第五只猴子都是這樣做的,問海灘上原來最少有多少個桃子?
*1.程序分析:采取直接驗證結(jié)果的方式
*/
public class MonkeyPeach_1 {
public static boolean isRight(int n) {
for(int i=0; i<5; i++) {
if(n % 5 == 1) {
n = n - 1;
n = n - n / 5;
}else
return false;
}
return true;
}
public static void main(String[] args) {
for(int n=1; ; n++) {
if(isRight(n)) {
System.out.println("海灘上原來桃子得到最小值為:" + n);
return;
}
}
}
}
【程序42】 Test4.java
題目:809*??=800*??+9*??+1
其中??代表的兩位數(shù),8*??的結(jié)果為兩位數(shù),9*??的結(jié)果為3位數(shù)。求??代表的兩位數(shù),及809*??后的結(jié)果。
注:這道題很有問題啊。沒有結(jié)果~~~好生郁悶,看我的兩種理解吧第一種:所有的??代表同一個數(shù)
javapackage test50;
/**
* @author VellBibi
*【程序42】 Test4.java
*題目:809*??=800*??+9*??+1
*其中??代表的兩位數(shù),8*??的結(jié)果為兩位數(shù),9*??的結(jié)果為3位數(shù)。求??代表的兩位數(shù),及809*??后的結(jié)果。
*/
public class Test4 {
public static void main(String[] args) {
for(int i=10; i<100 && 8*i<100 && 9*i<1000; i++){
if(809*i == (800*i + 9*i + 1)){
System.out.println("??代表的兩位數(shù):" + i);
System.out.println("809*??后的結(jié)果" + i*809);
return;
}
}
System.out.println("沒有符合的數(shù)");
}
}
第二種:所有的??都不同
javapackage test50;
/**
* @author VellBibi
*【程序42】 Test4.java
*題目:809*??=800*??+9*??+1
*其中??代表的兩位數(shù),8*??的結(jié)果為兩位數(shù),9*??的結(jié)果為3位數(shù)。求??代表的兩位數(shù),及809*??后的結(jié)果。
*/
public class Test4_1 {
public static void main(String[] args) {
for(int i=10; i<100; i++){
for(int j=10; j<100 && 8*j<100; j++){
for(int l=10; l<100 && 9*l<1000; l++){
if(809*i == 800*j + 9*l + 1){
System.out.println("809*"+i+"== 800*"+j+"+ 9*"+l+"+ 1");
System.out.println("809*??后的結(jié)果" + i*809);
return;
}
}
}
}
System.out.println("沒有符合的數(shù)");
}
}
【程序43】 Test5.java
題目:求0—7所能組成的奇數(shù)個數(shù)。
注:當(dāng)有一位數(shù)時:有1.3.5.7這4個奇數(shù)
當(dāng)有兩位數(shù)時:最高為有7種(除0)選擇,最低為有4(1.3.5.7為奇數(shù)的條件)種? 總數(shù)為4*7
當(dāng)有三位數(shù)時:最高為有7中(除0)選擇,第二位有8中選擇,最后一位4種(1.3.5.7) 總數(shù) 4*8*7
當(dāng)有四位數(shù)時:最高為有7中(除0)選擇,第三位有8中選擇,第二位有8中選擇,最后一位4種(1.3.5.7) 總數(shù) 4*8*8*7
*
*
*
依次類推
javapackage test50;
/**
* @author VellBibi
*【程序43】 Test5.java
*題目:求0—7所能組成的奇數(shù)個數(shù)。
* 注:當(dāng)有一位數(shù)時:有1.3.5.7這4個奇數(shù)
* 當(dāng)有兩位數(shù)時:最高為有7種(除0)選擇,最低為有4(1.3.5.7為奇數(shù)的條件)種 總數(shù)為4*7
* 當(dāng)有三位數(shù)時:最高為有7中(除0)選擇,第二位有8中選擇,最后一位4種(1.3.5.7) 總數(shù) 4*8*7
* 當(dāng)有四位數(shù)時:最高為有7中(除0)選擇,第三位有8中選擇,第二位有8中選擇,最后一位4種(1.3.5.7) 總數(shù) 4*8*8*7
*/
public class Test5 {
public static void main(String[] args) {
int cup = 7*4;//二位數(shù)
int count = cup + 4;
for(int i=2; i<8; i++){
cup = 8*cup;
count = count + cup;
}
System.out.println("0—7所能組成的奇數(shù)個數(shù):" + count);
}
}
【程序44】 TestEven.java
題目:一個偶數(shù)總能表示為兩個素數(shù)之和。
javapackage test50;
import java.util.Scanner;
/**
* @author VellBibi
*【程序44】 TestEven.java
*題目:一個偶數(shù)總能表示為兩個素數(shù)之和。
*/
public class TestEven {
/**
* 判斷n是不是質(zhì)數(shù)
* @param n
* @return
*/
public static boolean isPrimeNumber(int n){
if(n < 2)return false;
for(int i=2; i
if(n%i == 0)
return false;
}
return true;
}
public static void main(String[] args) {
int n = new Scanner(System.in).nextInt();
if(n%2 != 0){
System.out.println("輸入的不是偶數(shù)");
return;
}
for(int i=2; i
if(isPrimeNumber(i) && isPrimeNumber(n - i)){
System.out.println(n + "=" + i + "+" + (n-i));
return;
}
}
}
}
【程序45】TestPrime9.java
題目:判斷一個素數(shù)能被幾個9整除這個題貌是有問題吧,素數(shù)只能被1和自身整除啊,9都不是素數(shù)。。。無解
總結(jié)
以上是生活随笔為你收集整理的java经典50道_50道经典的JAVA编程题(41-45)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 革命_JAVA数据库连接池的革
- 下一篇: linux mysql5.6编译_Lin