0716 猴子分桃子/0—7所能组成的奇数/偶数=两素数之和/学生成绩降序排列/电话传递数据

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);
	}
}

猜你喜欢

转载自blog.csdn.net/Fern2018/article/details/81173635