演算法題(41-->50)題目:海灘上有一堆桃子,五隻猴子來分...
【程式41】題目:海灘上有一堆桃子,五隻猴子來分。第一隻猴子把這堆桃子憑據分為五份,多了一個,這隻猴子把多的一個扔入海中,拿走了一份。第二隻猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五隻猴子都是這樣做的,問海灘上原來最少有多少個桃子?
public static void main(String[] args) {
int i, m, j = 0, k, count;
for (i = 4; i < 10000; i += 4) {
count = 0;
m = i;
for (k = 0; k < 5; k++) {
j = i / 4 * 5 + 1;
i = j;
if (j % 4 == 0)
count++;
else
break;
}
i = m;
if (count == 4) {
System.out.println("原有桃子 " + j + " 個");
break;
}
}
}
【程式42】題目:809 * ??=800 * ??+9 * ??+1 其中??代表的兩位數,8 * ??的結果為兩位數,9 * ??的結果為3位數。求??代表的兩位數,及809 * ??後的結果。
//題目錯了!809x=800x+9x+1 這樣的方程無解。去掉那個1就有解了。
public class AA {
public static void main(String[] args) {
int a = 809, b, i;
for (i = 10; i < 13; i++) {
b = i * a;
if (8 * i < 100 && 9 * i >= 100)
System.out.println("809*" + i + "=" + "800*" + i + "+" + "9*"+ i + "=" + b);
}
}
}
結果:
809*12=800*12+9*12=9708
【程式43】題目:求0—7所能組成的奇數個數。
public class AA {
public static void main(String[] args) {
int sum = 4;
int j;
System.out.println("組成1位數是 " + sum + " 個");
sum = sum * 7;
System.out.println("組成2位數是 " + sum + " 個");
for (j = 3; j <= 9; j++) {
sum = sum * 8;
System.out.println("組成" + j + "位數是 " + sum + " 個");
}
}
}
結果:
組成1位數是 4 個
組成2位數是 28 個
組成3位數是 224 個
組成4位數是 1792 個
組成5位數是 14336 個
組成6位數是 114688 個
組成7位數是 917504 個
組成8位數是 7340032 個
組成9位數是 58720256 個
【程式44】題目:一個偶數總能表示為兩個素數之和。
方法一:
//由於用除sqrt(n)的方法求出的素數不包括2和3,
//因此在判斷是否是素數程式中人為新增了一個3。
import java.util.*;
public class AA {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n, i;
do {
System.out.print("請輸入一個大於等於6的偶數:");
n = s.nextInt();
} while (n < 6 || n % 2 != 0); // 判斷輸入是否是>=6偶數,不是,重新輸入
fun fc = new fun();
for (i = 2; i <= n / 2; i++) {
if ((fc.fun(i)) == 1 && (fc.fun(n - i) == 1)) {
int j = n - i;
System.out.println(n + " = " + i + " + " + j);
} // 輸出所有可能的素數對
}
}
}
class fun {
public int fun(int a) // 判斷是否是素數的函式
{
int i, flag = 0;
if (a == 3) {
flag = 1;
return (flag);
}
for (i = 2; i <= Math.sqrt(a); i++) {
if (a % i == 0) {
flag = 0;
break;
} else
flag = 1;
}
return (flag);// 不是素數,返回0,是素數,返回1
}
}
方法二:
import java.util.*;
public class AA {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n;
do {
System.out.print("請輸入一個大於等於6的偶數:");
n = s.nextInt();
} while (n < 6 || n % 2 != 0); // 判斷輸入是否是>=6偶數,不是,重新輸入
for (int i = 3; i <= n / 2; i += 2) {
if (fun(i) && fun(n - i)) {
System.out.println(n + " = " + i + " + " + (n - i));
} // 輸出所有可能的素數對
}
}
static boolean fun(int a) { // 判斷是否是素數的函式
boolean flag = false;
if (a == 3) {
flag = true;
return (flag);
}
for (int i = 2; i <= Math.sqrt(a); i++) {
if (a % i == 0) {
flag = false;
break;
} else
flag = true;
}
return (flag);
}
}
【程式45】題目:判斷一個素數能被幾個9整除
//題目錯了吧?能被9整除的就不是素數了!所以改成整數了。
import java.util.*;
public class AA {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("請輸入一個整數:");
int num = s.nextInt();
int tmp = num;
int count = 0;
while (tmp % 9 == 0) {
tmp /= 9;
count++;
}
System.out.println(num + " 能夠被 " + count + " 個9整除。");
}
}
【程式46】題目:兩個字串連線程式
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("請輸入一個字串:");
String str1 = s.nextLine();
System.out.print("請再輸入一個字串:");
String str2 = s.nextLine();
String str = str1 + str2;
System.out.println("連線後的字串是:" + str);
}
【程式47】題目:讀取7個數(1—50)的整數值,每讀取一個值,程式列印出該值個數的*。
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = 1, num;
while (n <= 7) {
do {
System.out.print("請輸入一個1--50之間的整數:");
num = s.nextInt();
} while (num < 1 || num > 50);
for (int i = 1; i <= num; i++) {
System.out.print("*");
}
System.out.println();
n++;
}
}
【程式48】題目:某個公司採用公用電話傳遞資料,資料是四位的整數,在傳遞過程中是加密的,加密規則如下:每位數字都加上5,然後用和除以10的餘數代替該數字,再將第一位和第四位交換,第二位和第三位交換。
public static void main(String args[]) {
Scanner s = new Scanner(System.in);
int num = 0, temp;
do {
System.out.print("請輸入一個4位正整數:");
num = s.nextInt();
} while (num < 1000 || num > 9999);
int a[] = new int[4];
a[0] = num / 1000; // 取千位的數字
a[1] = (num / 100) % 10; // 取百位的數字
a[2] = (num / 10) % 10; // 取十位的數字
a[3] = num % 10; // 取個位的數字
for (int j = 0; j < 4; j++) {
a[j] += 5;
a[j] %= 10;
}
for (int j = 0; j <= 1; j++) {
temp = a[j];
a[j] = a[3 - j];
a[3 - j] = temp;
}
System.out.print("加密後的數字為:");
for (int j = 0; j < 4; j++)
System.out.print(a[j]);
}
【程式49】題目:計算字串中子串出現的次數
public static void main(String args[]) {
Scanner s = new Scanner(System.in);
System.out.print("請輸入字串:");
String str1 = s.nextLine();
System.out.print("請輸入子串:");
String str2 = s.nextLine();
int count = 0;
if (str1.equals("") || str2.equals("")) {
System.out.println("你沒有輸入字串或子串,無法比較!");
System.exit(0);
} else {
for (int i = 0; i <= str1.length() - str2.length(); i++) {
if (str2.equals(str1.substring(i, str2.length() + i)))
// 這種比法有問題,會把"aaa"看成有2個"aa"子串。
count++;
}
System.out.println("子串在字串中出現: " + count + " 次");
}
}
【程式50】題目:有五個學生,每個學生有3門課的成績,從鍵盤輸入以上資料(包括學生號,姓名,三門課成績),計算出平均成績,把原有的資料和計算出的平均分數存放在磁碟檔案 "stud "中。
import java.io.*;
import java.util.*;
public class AA {
public static void main(String[] args) {
Scanner ss = new Scanner(System.in);
String[][] a = new String[5][6];
for (int i = 1; i < 6; i++) {
System.out.print("請輸入第" + i + "個學生的學號:");
a[i - 1][0] = ss.nextLine();
System.out.print("請輸入第" + i + "個學生的姓名:");
a[i - 1][1] = ss.nextLine();
for (int j = 1; j < 4; j++) {
System.out.print("請輸入該學生的第" + j + "個成績:");
a[i - 1][j + 1] = ss.nextLine();
}
System.out.println("\n");
}
// 以下計算平均分
float avg;
int sum;
for (int i = 0; i < 5; i++) {
sum = 0;
for (int j = 2; j < 5; j++) {
sum = sum + Integer.parseInt(a[i][j]);
}
avg = (float) sum / 3;
a[i][5] = String.valueOf(avg);
}
// 以下寫磁碟檔案
String s1;
try {
File f = new File("C:\\stud");
if (f.exists()) {
System.out.println("檔案存在");
} else {
System.out.println("檔案不存在,正在建立檔案");
f.createNewFile();// 不存在則建立
}
BufferedWriter output = new BufferedWriter(new FileWriter(f));
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 6; j++) {
s1 = a[i][j] + "\r\n";
output.write(s1);
}
}
output.close();
System.out.println("資料已寫入c盤檔案stud中!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
相關文章
- JAVA 猴子分桃子問題Java
- 猴子吃桃子問題:有一堆桃子,猴子第一天吃了其中的一半,並多吃了一個! 以後每天猴子都吃其中的一半,然後再多吃一個。當到第10天時, 想再吃時(即還沒吃),發現只有一個桃子了。問題:最初共多少個桃子?
- 海盜分贓演算法題演算法
- 洛谷 P1783 海灘防禦 做題記錄
- .net面試題目1-50面試題
- 猴子吃桃問題
- 【C語言】猴子吃桃問題。猴子第一天摘下若干個桃子,每天都吃了前一天剩下的一半零一個,到第10天早上想再吃的時候,就剩下一個桃子. 求第一天共摘多少個桃子。C語言
- Atcoder 題目選做(五)
- 猴子分蘋果蘋果
- PAT甲級考試題庫題目分類
- 題目 1501: [藍橋杯][演算法提高VIP]分蘋果演算法蘋果
- 前端演算法題目解析(一)前端演算法
- JS常見演算法題目JS演算法
- 重鏈剖分題目選講
- 50道經典的JAVA程式設計題(目錄)Java程式設計
- (C語言版)猴子吃桃問題C語言
- ACM訓練方案-POJ題目分類ACM
- 一個題目涉及到的50個Sql語句SQL
- [經典演算法]海盜分金問題sql求解(貪心演算法)演算法SQL
- C語言演算法競賽入門(二)—陣列元素移動、排序問題、猴子選大王問題C語言演算法陣列排序
- 動態規劃分類題目總結動態規劃
- 近五年上午試題分佈分析 (轉)
- 【ybtoj】二分演算法例題演算法
- 迴文數系列題目(經典演算法)演算法
- 三分鐘看完「分糖果」演算法問題演算法
- [Project Euler] 來做尤拉專案練習題吧: 題目007Project
- dfs題目這樣去接題,秒殺leetcode題目LeetCode
- pta題目集6和題目集7題後總結
- 面試題目面試題
- Leetcode題解1-50題LeetCode
- TensorFlow系列專題(五):BP演算法原理演算法
- 演算法刷題:LeetCode中常見的動態規劃題目演算法LeetCode動態規劃
- 用尤拉計劃題目來學q語法
- LeetCode簡單演算法題目-JS解法LeetCode演算法JS
- Reverse a String-freecodecamp演算法題目演算法
- 啊哈演算法117頁的經典題目演算法
- 標題黨--論文題目
- BlueStacks:你心中的蘋果女神 50%的人臉上有雀斑蘋果