求最小公倍数
题目描述:正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
输入描述:输入两个正整数A和B。
输出描述:输出A和B的最小公倍数。
示例1:
输入:5 7
输出:35
示例2:
输入:2 4
输出:4
链接:求最小公倍数
思路
思路1:A和B的最小公倍数即最小能够整除A和B的数,令max等于AB中最大的那个数,那么A和B的最小公倍数取值范围为max至AB之间,因此我们遍历[max,AB],最先找到可以整除A和整除B的那个数,即是AB两数的最小公倍数。
思路2:最小公倍数=两数之积/最大公约数,使用辗转相除法进行最大公约数的求解:如A=7,B=5,7/5=1(余2),5/2=2(余1),2/1=2(余0),因此最大公约数为1.
代码
思路1:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
int A=s.nextInt();
int B=s.nextInt();
int max=A>B?A:B;
for(int i=max;i<=A*B;i++) {
if(i%A==0&&i%B==0) {
System.out.println(i);
break;
}
}
}
}
思路2:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
int A=s.nextInt();
int B=s.nextInt();
int num=A*B;
while(A%B!=0) {
int C=A%B;
A=B;
B=C;
}
System.out.println(num/B);
}
}
两种排序方法
题目描述:
考拉有n个字符串字符串,任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法: 1.根据字符串的字典序排序。例如:
“car” < “carriage” < “cats” < “doggies < “koala”
2.根据字符串的长度排序。例如:
“car” < “cats” < “koala” < “doggies” < “carriage”
考拉想知道自己的这些字符串排列顺序是否满足这两种排序方法,考拉要忙着吃树叶,所以需要你来帮忙验证。
输入描述:输入第一行为字符串个数n(n ≤ 100)
接下来的n行,每行一个字符串,字符串长度均小于100,均由小写字母组成。
输出描述:
如果这些字符串是根据字典序排列而不是根据长度排列输出"lexicographically”,
如果根据长度排列而不是字典序排列输出"lengths",
如果两种方式都符合输出"both",否则输出"none"。
示例:
输入:
3
a
aa
bbb
输出:both
链接:两种排序方法
思路
编写两个函数,分别判断是否是字典序列排序,是否是按长度排序,进而根据不同情况输出不同的结果。判断是否按字典序列排序,使用compareTo()方法,此方法用于两个相同数据类型的比较,相同返回0,小于返回-1,大于返回1。判断是否按长度排序,使用length()方法进行判断。
代码
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
int n=s.nextInt();
String[] strings=new String[n+1];
//读取字符串并将其存放在字符串数组中
for(int i=0;i<strings.length;i++) {
strings[i]=s.nextLine();
}
if(isLex(strings)&&isLength(strings)) {
System.out.println("both");
} else if(isLex(strings)&&!isLength(strings)) {
System.out.println("lexicographically");
} else if(!isLex(strings)&&isLength(strings)) {
System.out.println("lengths");
} else {
System.out.println("none");
}
}
//判断其是否按字典序列排序,注意边界是长度-1放置越界
public static boolean isLex(String[] s) {
for(int i=0;i<s.length-1;i++) {
if(s[i].compareTo(s[i+1])>0) {
return false;
}
}
return true;
}
//判断是否按长度排序
public static boolean isLength(String[] s) {
for(int i=0;i<s.length-1;i++) {
if(s[i].length()>s[i+1].length()) {
return false;
}
}
return true;
}
}