java算法题(3)

1.一个1-100000的整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

public class WanShu {
	public static void main(String[] args) {
//		一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
		for(int i =1;i<100000;i++) {
			boolean  b1 = wanshu(i+100);     //调用方法,判断b1 是不是完全平方数
			if(b1) {
				boolean b2 = wanshu(i+168);   //再调用方法,判断b2 是不是完全平方数
				if(b2) {
					System.out.println(i);      //    结果输出:156
				}
			}
		}
	}
	public static boolean wanshu(int num) { //判断一个数是不是完全平方数
			boolean res = false;
			if(num>0) {
					int ss = (int) Math.sqrt(num);
					res = ss*ss == num ;
			}
			return res;
	}
}

2.输出直角三角形

int k=6;
		for(int i =0;i<k;i++) {
			for(int j =0;j<i;j++) {
				System.out.print("*");
			}
			System.out.println();
		}

3.输出菱形

int  k=6;
for(int i =0;i<k;i++) {
			for(int j=0;j<k-i;j++) {
				System.out.print("  ");
			}
			for(int j=0;j<i*2-1;j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		
		for(int i =k-1;i>0;i--) {
			for(int j=0;j<k-i;j++) {
				System.out.print("  ");
			}
			for(int j=0;j<i*2-1;j++) {
				System.out.print("*");
			}
			System.out.println();
		}

4.输入一个年份,判断是否为闰年

package suanfa.com;

import java.util.Scanner;

public class RunNian {

	public static void main(String[] args) {
//		输入一个年份,判断是否为闰年
		int year ;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个年份");
		year = shuru(sc);
		
		
		if(year%100 ==0 &&year%4 !=0 ||year%400==0) {
			System.out.println("是闰年");
		}else {
			System.out.println("不是闰年");
		}
	}
	
	public static int  shuru(Scanner num) {
		int res =0;
		while(true) {
			String cc = num.nextLine();
			try {
				res = Integer.parseInt(cc);
				if(res>0) {
					break;
				}
				System.out.println("请输入正整数");			
			} catch (Exception e) {
				System.out.println("请输入合法字符");
			}		
		}
		return res;
	}
	
	
}

5.企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低
于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,
高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间
时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当
月利润I,求应发放奖金总数?

package suanfa.com;

import java.util.Scanner;

public class LiRun {

	public static void main(String[] args) {
//		4、企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低
//		于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,
//   高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间
//		时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当
//		月利润I,求应发放奖金总数?
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入利润");
		int k = shuru(sc);
		double jj = 0;
		if (k <= 10) {
			jj = k * 0.1;
		} else if (k <= 20) {
			jj = (k - 10) * 0.075 + 10 * 0.1;
		} else if (k <= 40) {
			jj = (k - 20) * 0.05 + (20 - 10) * 0.075 + 10 * 0.1;
		} else if (k <= 60) {
			jj = (k - 40) * 0.03 + (40 - 20) * 0.05 + (20 - 10) * 0.075 + 10 * 0.1;
		} else if (k <= 100) {
			jj = (k - 60) * 0.015 + (60 - 40) * 0.03 + (40 - 20) * 0.05 + (20 - 10) * 0.075 + 10 * 0.1;
		} else {
			jj = (k - 100) * 0.1 + (100 - 60) * 0.015 + (60 - 40) * 0.03 + (40 - 20) * 0.05 + (20 - 10) * 0.075
					+ 10 * 0.1;
		}
		System.out.println(jj);
	}
	
	public static int  shuru(Scanner num) {
		int res =0;
		while(true) {
			String cc = num.nextLine();
			try {
				res = Integer.parseInt(cc);
				if(res>0) {
					break;
				}
				System.out.println("请输入正整数");			
			} catch (Exception e) {
				System.out.println("请输入合法字符");
			}		
		}
		return res;
	}
	
	
}

6.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

package suanfa.com;

public class Ball {

	public static void main(String[] args) {
//		5、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第
//		10次反弹多高?
		double h =100;
		double pop10 = pop(h, 10);
		System.out.println("第10次弹起高度为"+ pop10);
		double res  =100;
		for(int i=1;i<10;i++) {
			res += pop(h, i);
		}
		System.out.println("第10次落地经过的路程"+res);	

	}
	public static double pop(double high, int n) {
		double res = high;
		for (int i = 0; i < n; i++) {
			res /= 2;
		}
		return res;
	}
}

7.一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数

package suanfa.com;

public class WanShu {

	public static void main(String[] args) {
//		3、一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数
			for(int i = 0;i<1000;i++) {
			if(wanshu(i)) {
				System.out.println(i+"是完数");
			}
			}
	}	
	public static boolean wanshu(int num) {     //判断一个数是否为     完数的方法
		int sum = 0;
		for(int i = 1;i<num;i++) {         // 一个数的因数一定小于这个数
			if(num%i==0) {   
				sum+=i;
			}	
		}
		return num ==sum;
	}
}

8.有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

	int count =0;
		StringBuilder sb = new StringBuilder();
		for (int i = 1; i <= 4; i++) {
			for (int m = 1; m <= 4; m++) {
				for (int k = 1; k <= 4; k++) {
					if (i != m && i != k && m != k) {
						String ss = i + "" + m + "" + k;
						if (sb.indexOf(ss) < 0) {
							count ++;
							sb.append(ss);
							if(count%6==0) {
								sb.append("\n");
							}else {
								sb.append("\t");
							}
						}
					}
				}
			}
		}
		if (sb.length() >0) {
			sb.deleteCharAt(sb.length() -1);
		}
		System.out.println(sb);
		System.out.println(sb.length()/4+1);
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值