package demo;
public class Demo01 {
/**
* 1.题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,
多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,
又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,
问海滩上原来最少有多少个桃子?
* @param args
*/
public static void main(String[] args) {
for (int i = 1; i < 10000; i++) {
if(test(i)){
System.out.println(i);
break;
}
}
}
/**
* 判断参数x是不是一个符合题意的桃子数
* @param x
* @return
*/
public static boolean test(int x){
for (int i = 0; i <5; i++) {
if(x%5==1){
x = (x-1)*4/5;
}else{
return false;
}
}
return true;
}
}
package Do;
/**
* 海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,
* 多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,
* 又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,
* 问海滩上原来最少有多少个桃子?
*
* 思维:一开始就加入4个桃子,桃子的总数 恰好为5的倍数,设为x,
* 第一只猴子拿走了其中的五分之一,并将其中一个扔入海里,剩下的桃子仍是5的倍数,为x*(4/5),
* 第二只猴子拿走了其中的五分之一,并将其中一个扔入海里,剩x*(4/5)^2,
* 第三、第四、第五只猴子都是这样做的,最后剩x*(4/5)^5,即x*(1024/3125),
* 所以桃子总数最少为(5)^5 - (5 - 1) = 3121.
*/
import java.util.Scanner;
public class Test01 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
System.out.println("请输入猴子的数量:"); //题中为5只
int monkey = scan.nextInt();
System.out.println("请输入每次把桃子平均分为几份又多了一个:"); //题中为五分之一
int n = scan.nextInt();
int number = (int) Math.pow(n, monkey);
number = number - (n - 1); // (5)^5 - (5 - 1)
System.out.println("桃子最少有" + number + "个");
}
}
package demo;
public class Demo02 {
/**
* 2.题目:求0—7所能组成的奇数个数。
程序分析:最少也是1位数,最多能组成8位的数字
第一位不能为零,最后一位不能是偶数
0到7有四个奇数 -- 1 3 5 7
* @param args
*/
public static void main(String[] args) {
int sum = 0;
int total = 1;
for (int i = 1; i <=8; i++) {
if(i==1){//1 3 5 7
total = 4;
}else if(i==2){
total *=7;
}else{
total *= 8;
}
sum += total;
System.out.println("0~7中"+i+"位奇数有:"+total);
}
System.out.println("0~7一共能组成"+sum+"个奇数");
}
}
package Do;
/**
* 求0—7所能组成的奇数个数。
* 程序分析:最少也是1位数,最多能组成8位的数字
* 第一位不能为零,最后一位不能是偶数
* 0到7有四个奇数
*/
public class Test02 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int number = 1;
int sum = 0;
for (int i = 1; i <= 8; i++) {
if (i == 1){
number = 4; //1位:4个(1 3 5 7)
}
// 限制使用次数,每个数只能用一次
else if(i == 2){
number = 4 * 6; //2位: 4*6 = 24个
}
else
number*=(9-i); //3位: 4*6*6 4位: 4*6*(9-3)*(9-4) 5位: 4*6*(9-3)*(9-4)*(9-5)
//6位: 4*6*(9-3)*(9-4)*(9-5)*(9-6) 7位: 4*6*(9-3)*(9-4)*(9-5)*(9-6)*(9-7)
//8位: 4*6*(9-3)*(9-4)*(9-5)*(9-6)*(9-7)*(9-8)
// 不限使用次数
// else if (i == 2)
// number = 4 * 7;
// else
// number *= 8;
// 限制使用次数
sum += number;
System.out.println(i + "位数的奇数个数为:" + number);
}
System.out.println("总奇数个数为:" + sum);
}
}
package demo;
import java.util.Scanner;
public class Demo03 {
/**
*
3.一个偶数总能表示为两个素数之和。
从控制台输入一个偶数,将其拆解成两个素数得和
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个偶数:");
int num = sc.nextInt();
for (int i = 2; i < num-1; i++) {
if(isSu(i) && isSu(num-i)){
System.out.println(num+"="+i+"+"+(num-i));
}
}
}
public static boolean isSu(int num){
for (int i = 2; i < num; i++) {
if(num%i==0){
return false;
}
}
return true;
}
}
package Do;
import java.util.Scanner;
/**
* 一个偶数总能表示为两个素数之和。
* 从控制台输入一个偶数,将其拆解成两个素数得和
*/
public class Test03 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
while (true) {
Scanner scan = new Scanner(System.in );
System.out.println("请输入一个大于2的偶数");
int evenNum = scan.nextInt();
if (evenNum <= 2 || evenNum % 2 != 0) {
System.out.println("输入错误,请重新输入"); //判断输入数据是否大于2且是否为偶数
continue;
}
else {
System.out.println(evenNum+"可以分解成两个素数之和:");
for (int i = 2; i <= evenNum / 2; i++) {
if (prime(i) == true && prime(evenNum - i) == true)
System.out.println(i + " " + (evenNum - i));
}
break;
}
}
}
public static boolean prime(int evenNum) { //素数判定
for (int i = 2; i < evenNum; i++) {
if (evenNum % i == 0)
return false;
}
return true;
}
}
package demo;
import java.util.Scanner;
public class Demo04 {
/**
* 4.有五个学生,从键盘输入以上数据(包括学生号,姓名,成绩),计算出平均成绩,
最高成绩,最低成绩,并且按照成绩降序排列学生得信息
* @param args
*/
public static void main(String[] args) {
Scanner scStr = new Scanner(System.in);
Scanner scFl = new Scanner(System.in);
Student[] stus = new Student[5];
for (int i = 0; i < stus.length; i++) {
System.out.println("第"+(i+1)+"个学生");
stus[i] = new Student();
System.out.print("学号:");
stus[i].setStuNo(scStr.nextLine());
System.out.print("姓名:");
stus[i].setStuName(scStr.nextLine());
System.out.print("成绩:");
stus[i].setStuScore(scFl.nextFloat());
}
//按成绩降序排列
Student temp = null;
for (int i = 0; i < stus.length-1; i++) {
for (int j = 0; j < stus.length-1-i; j++) {
if(stus[j].getStuScore()<stus[j+1].getStuScore()){
temp = stus[j];
stus[j] = stus[j+1];
stus[j+1] = temp;
}
}
}
//打印
float total = 0.0f;
for (int i = 0; i < stus.length; i++) {
total += stus[i].getStuScore();
System.out.println(stus[i]);
}
System.out.println("平均分:"+total/stus.length);
System.out.println("最高分:"+stus[0].getStuScore());
System.out.println("最低分:"+stus[stus.length-1].getStuScore());
}
}
package demo;
public class Student {
private String stuNo;
private String stuName;
private float stuScore;
public String getStuNo() {
return stuNo;
}
public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public float getStuScore() {
return stuScore;
}
public void setStuScore(float stuScore) {
this.stuScore = stuScore;
}
@Override
public String toString() {
return stuNo+","+stuName+","+ stuScore;
}
}
package Do;
import java.util.Scanner;
/**
* 有五个学生,从键盘输入以上数据(包括学生号,姓名,成绩),计算出平均成绩,
最高成绩,最低成绩,并且按照成绩降序排列学生得信息
*/
public class Test04 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in );
Student[] stu = new Student[5];
double sum = 0; //成绩总和
double ave = 0; //平均成绩
//输入学生信息
for (int i = 1; i < stu.length + 1; i++) {
System.out.println("请输入第" + (i) + "位学生的学号:");
String ID = scan.next();
System.out.println("请输入第" + (i) + "位学生的姓名:");
String NAME = scan.next();
System.out.println("请输入第" + (i) + "位学生的成绩:");
int SCORE = scan.nextInt();
if (SCORE < 0 || SCORE > 100) {
System.out.println("输入成绩有误,请重新输入");
i = i - 1;
continue;
}
stu[i - 1] = new Student(ID, NAME, SCORE);
}
System.out.println("未排序前:");
for (int i = 0; i < stu.length; i++) {
System.out.println(stu[i]);
}
//降序排列(插入排序)
for (int i = 0; i < stu.length; i++) {
for (int j = i; j < stu.length; j++) {
if (stu[i].getscore() < stu[j].getscore()) {
Student temp = stu[i];
stu[i] = stu[j];
stu[j] = temp;
}
}
}
System.out.println("排序后:");
for (int i = 0; i < stu.length; i++) {
System.out.println(stu[i]);
}
for (int i = 0; i < stu.length; i++)
sum+=stu[i].getscore();
ave=sum/stu.length;
System.out.println("平均成绩:" + ave);
System.out.println("最高成绩:" + stu[0].getscore());
System.out.println("最低成绩:" + stu[4].getscore());
}
}
class Student {
String id;
String name;
int score;
public Student(String id, String name, int score) {
this.id = id;
this.name = name;
this.score = score;
}
public int getscore() {
return this.score;
}
public String toString() {
return "学号:" + this.id + " 姓名:" + this.name + " 成绩:" + this.score;
}
}
package demo;
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个4位整数:");
int num = sc.nextInt();
num = addKey(num);
System.out.println("加密后的数为:"+num);
/**
* 1234
* 6789
* 6789
* 9876
*/
}
/**
* 5.某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,
加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
程序分析:1、数字取位,个十百千位分别求出
2、按要求替换
3、按要求交换
* @param num
* @return
*/
public static int addKey(int num){
int one = num%10;
int tw = num/10%10;
int thr = num/100%10;
int fo = num/1000;
one = (one+5)%10;
tw = (tw+5)%10;
thr = (thr+5)%10;
fo = (fo+5)%10;
return one*1000 + tw*100 + thr*10 + fo;
}
}
package Do;
import java.util.Scanner;
/**
* 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:
* 每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
* 程序分析:1、数字取位,个十百千位分别求出
* 2、按要求替换
* 3、按要求交换
*/
public class Test05 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in );
System.out.println("请输入一个需传递的数据(4位整数):");
int number = scan.nextInt();
int one, ten, hundred, thousand;
thousand = (5 + number / 1000) % 10;
hundred = (5 + number / 100 % 10) % 10;
ten = (5 + number / 10 % 10) % 10;
one = (5 + number % 10) % 10;
//第一位和第四位交换
int temp = 0;
temp = thousand;
thousand = one;
one = temp;
//第二位和第三位交换
temp = hundred;
hundred = ten;
ten = temp;
System.out.println("加密后的数字为:" + thousand + hundred + ten + one);
}
}