题目
- JAVA11 求最小公倍数
- 分析:
- 代码:
- 大佬代码:
- JAVA12 小球走过路程计算
- 分析:
- 代码:
JAVA11 求最小公倍数
描述
编写一个方法,该方法的返回值是两个不大于100的正整数的最小公倍数。
输入描述:
两个int类型变量作为方法的参数。
输出描述:
int类型的变量,值为两个数的最小公倍数。
示例:
输入:3 7 输出:21
分析:
1.两个数的最小公倍数为:两个数的乘积/最大公约数。
2.两个数不大于100。
代码:
求最大公约数方法:辗转相除法。
//辗转相除法
public static int getCD(int m,int n){
if(m<n){//保持m代表的数 大。
int temp=n;
n=m;
m=temp;
}
while(n!=0){
int temp=n;
n=m%n;
m=temp;
}
System.out.println(m);
return m;
}
完整代码
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
int m = console.nextInt();
int n = console.nextInt();
int result = getCM(m, n);
System.out.println(result);
}
public static int getCM(int m, int n) {
return (m*n/getCD(m,n));
}
public static int getCD(int m, int n) {
if (m < n) { //保持m代表的数 大。
int temp = n;
n = m;
m = temp;
}
while (n != 0) {
int temp = n;
n = m % n;
m = temp;
}
//System.out.println(m);
return m;
}
}
大佬代码:
使用循环
import java.util.*;
public class Main {
public static void main(String[] args) {
//标准输入
Scanner console = new Scanner(System.in);
int m = console.nextInt();
int n = console.nextInt();
//计算最小公倍数
int result = getCM(m, n);
//输出结果
System.out.println(result);
}
//计算最小公倍数
public static int getCM(int m, int n){
//计算m、n中较大者
int max=Math.max(m,n);
//从max到m*n之间找最小公倍数
for(int i=max;i<=m*n;i++){
//如果既能被m整除又能被n整除,说明是最小公倍数,直接返回
if(i%m==0&&i%n==0){
return i;
}
}
return -1;
}
}
将两个数的倍数从小到大依次排列,直到出现相同的倍数。
int a = m;
int b = n;
//4 8 12 16 20
//6 12 18
while (true) {
if (m == n) {
break;
} else {
if (m < n) {
m += a;
} else {
n += b;
}
}
}
JAVA12 小球走过路程计算
描述
一球从h米高度自由落下,每次落地后反弹回原高度的一半再落下,求它在第n次落地时共经过了多少米?第n次反弹多高?
输入描述:
输入小球的初始高度和落地的次数(先输入小球初始高度再输入反弹次数)。
输出描述:
输出小球反弹的高度和经过的距离(先输出反弹的高度再输出经过的距离,中间用空格隔开)。
结果保留三位小数,保留方式已经写在预设方法备注中。
示例:
输入:100 3 输出:12.500 250.000
分析:
1.有多少次反弹,则用h/2计算反弹距离。
2.一共经过的距离,则是计算n次反弹之前的距离。
代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
float h=scanner.nextFloat();
int n =scanner.nextInt();
double sum=h;
for(int i=1;i<=n;i++){
h/=2;
if(i!=n){
sum+=2*h;
}
}
System.out.println(String.format("%.3f", h)+" "+String.format("%.3f", sum));
}
}