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