链接:https://www.nowcoder.com/questionTerminal/22948c2cad484e0291350abad86136c3
来源:牛客网
求最小公倍数
正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
输入描述:
输入两个正整数A和B。
输出描述:
输出A和B的最小公倍数。
示例1
输入
5 7
输出
35
最小公倍数m与最大公因数n有一定的关系,AB = m n.
所以在求最小公倍数之前要求出最大公因数,就可得出m = A*B /n
那么如何求最大公因数呢?
- A%B的余数为r,当r为0时,算法结束,这时的B就是最大公约数
- 令A= B,B = r,继续第一步
第一种写法:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
int a = scanner.nextInt();
int b = scanner.nextInt();
int m = a * b; //因为下面的a和b会改变,所以先提前保存原值
while(a % b != 0){
int c = a % b;
a = b;
b = c;
}
System.out.println(m / b);
}
}
}
第二种写法:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
while(scanner.hasNextInt()){
int a = scanner.nextInt();
int b= scanner.nextInt();
int ab = gdc(a,b);
System.out.println(a * b / ab);
}
}
//求最大公因数ab
public static int gdc(int a,int b){
if(a == b){
return a;
}
while(a % b != 0){
int c = a % b;
a = b;
b = c;
}
return b;
}
}
链接:https://www.nowcoder.com/questionTerminal/839f681bf36c486fbcc5fcb977ffe432
来源:牛客网
两种排序方法
考拉有n个字符串字符串,任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法: 1.根据字符串的字典序排序。例如:
“car” < “carriage” < “cats” < "doggies < “koala”
2.根据字符串的长度排序。例如:
“car” < “cats” < “koala” < “doggies” < “carriage”
考拉想知道自己的这些字符串排列顺序是否满足这两种排序方法,考拉要忙着吃树叶,所以需要你来帮忙验证。
输入描述:
输入第一行为字符串个数n(n ≤ 100)
接下来的n行,每行一个字符串,字符串长度均小于100,均由小写字母组成
输出描述:
如果这些字符串是根据字典序排列而不是根据长度排列输出"lexicographically",
如果根据长度排列而不是字典序排列输出"lengths",
如果两种方式都符合输出"both",否则输出"none"
示例1
输入
3
a
aa
bbb
输出
both
//BufferedReader 从字符流中读取文本并缓存
BufferedReader bi = new BufferedReader(new InputStreamReader(System.in))
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException{
//BufferedReader表示从字符流中读取文本并且缓存
BufferedReader bi = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bi.readLine());
String[] str = new String[n];
for(int i = 0; i < n; i++) {
str[i] = bi.readLine();
}
if(isSortDiction(str) && isSortLength(str)){
System.out.println("both");
}else if(isSortDiction(str)){
System.out.println("lexicographically");
}else if(isSortLength(str)){
System.out.println("lengths");
}else{
System.out.println("none");
}
}
//字典序
public static boolean isSortDiction(String[] str) {
for(int i = 0; i < str.length - 1; i++){
if(str[i].compareTo (str[i + 1]) > 0) {
return false;
}
}
return true;
}
//长度排序
public static boolean isSortLength(String[] str){
for(int i = 0; i < str.length - 1; i++){
if(str[i].length() > str[i + 1].length()){
return false;
}
}
return true;
}
}