- 对于任意两个正整数x和k,我们定义repeat(x, k)为将x重复写k次形成的数,例如repeat(1234, 3) =
123412341234,repeat(20,2) = 2020.给出4个整数x1, k1, x2, k2, 其中v1 = (x1, k1), v2 = (x2,
k2),请你来比较v1和v2的大小。
public class text {
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
System.out.println(“输入x1,k1”);
int x1 = sc.nextInt();
int k1 = sc.nextInt();
System.out.println(“输入x2,k2”);
int x2 = sc.nextInt();
int k2 = sc.nextInt();
String
s = “”, ss = “”;
for (int i = 0; i < k1; i++) {
s += x1;
}
System.out.println(s);
for (int i = 0; i < k2; i++) {
ss += x2;
}
System.out.println(ss);
if (s.length() > ss.length()) {
System.out.println(“greater”);
} else if (s.length() < ss.length()) {
System.out.println(“less”);
} else {
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == ss.charAt(i)) {
continue;
}
else if (s.charAt(i) > ss.charAt(i)) {
System.out.println(“greater”);
return;
}
else {
System.out.println(“less”);
return;
}
}
System.out.println(“equal”);
}
}
}
- 小易有一个长度为n的整数序列,a_1,…,a_n。然后考虑在一个空序列b上进行n次以下操作:1、将a_i放入b序列的末尾2、逆置b序列
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class text {
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
System.out.println(“输入数组长度:”);
int num = sc.nextInt();
System.out.println(“输入数组:”);
int[] nums = new int[num];
for (int i = 0; i < num; i++) {
nums[i] = sc.nextInt();
}
List
res = new ArrayList<>();
if (num % 2 == 0) {
//当n为偶数时,先从后向前输出偶数位置的数字,再从前向后输出奇数位置的数字
for (int i = nums.length - 1; i >= 0; i = i - 2)
res.add(nums[i]);
for (int i = 0; i < nums.length; i = i + 2)
res.add(nums[i]);
} else {
当n 为奇数时,先从后向前输出奇数位置的数字,再从前向后输出偶数位置的数字
for (int i = nums.length - 1; i >= 0; i = i - 2)
res.add(nums[i]);
for (int i = 1; i < nums.length; i = i + 2)
res.add(nums[i]);
}
for (int i = 0; i < res.size() ; i++)
System.out.print(res.get(i) + " ");
}
}
150.如果一个01串任意两个相邻位置的字符都是不一样的,为交错01串。例如:
“0101010”。有一个01串s,找出一个最长的连续交错01串。求子串的长度。
import java.util.Scanner;
public class text {
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
System.out.println(“请输入一个字符串:”);
String
s = sc.nextLine();
char[] chars = s.toCharArray();
int res = 1;
int temp = 1;
for (int i = 0; i < chars.length - 1; i++) {
if (chars[i] != chars[i + 1]) {
temp++;
res = Math.max(res, temp);
}
else
temp = 1;
}
System.out.print(res);
}
}
151.例如X = 509, 在黑板上出现过的数字依次是509, 50, 5, 他们的和就是564.
import java.util.Scanner;
public class text {
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
System.out.println(“输入一个数:”);
long n = sc.nextLong();
long cp = n;
long count = 1;// 记录位数
while (cp >= 10) {
count++;
cp /= 10;
}
long result = 0;
for (long i = count; i >= 1; i–) {
long divisor = 0;
for (long j = i; j >= 1; j–) {
divisor = divisor * 10 + 1;
}
long quotient = n / divisor;
if (quotient >= 10) {
System.out.println(-1);
return;
}
result = result * 10 + quotient;
n -= (quotient * divisor);
}
System.out.println(“结果是:” + result);
}
}
- 圆圈中最后剩下的数,要求移除后继续从移除后一位数开始执行。
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class text {
public static void main(String [] args) {
Scanner
sc=new Scanner(System.in);
System.out.println(“输入总人数:”);
int m=sc.nextInt();
System.out.println(“移除数:”);
int n=sc.nextInt();
int re=Solution(n,m);
System.out.println(re);
}
public static int Solution(int n, int m) {
if(n <= 0 || m <= 0)
return -1;
List list = new ArrayList<>();
for(int i=0; i<n; i++)
list.add(i);
int index = 0;
while(list.size()>1){
index = (index+m-1) % list.size();
list.remove(index);
}
return list.get(0);
}
}