📢📢📢哈喽大家好,来看今天的题目吧
📮📮📮排列字母📮📮📮
📋问题描述
❓思路分享
📮这道题用到一个冷知识:Arrays.sort()方法也是可以给字符数组排序滴。
📗参考代码
import java.sql.SQLOutput;
import java.util.Arrays;
/**
* @ClassName 排列字母
* @Author @浅夜
* @Date 2023/3/21 20:29
* @Version 1.0
*/
public class 排列字母 {
public static void main(String[] args) {
String s = "WHERETHEREISAWILLTHEREISAWAY";
char[] c = s.toCharArray();
Arrays.sort(c);
s = new String(c);
System.out.println(s);
}
}
🎈🎈🎈GCD🎈🎈🎈
📋问题描述
❓思路分析
🎈说实话看到这道题一点头绪都没有,想了一会也想不出来就点进了梗佬的题解,看了之后恍然大悟,才知道自己对gcd的性质不够熟悉。
🎈根据更相减损术可以得到:gcd(a,b) = gcd(a,b - a) 前提是b>=a,那么就可以得到题目中的式子:gcd(a + k,b + k) = gcd( a + k , b - a),我们设b - a = c,那么就是求gcd( a + k , c),显然这个式子的最大公约数就是c了,我们求出给a增加多少是c的倍数就是k了。
📗参考代码
import java.util.Scanner;
/**
* @ClassName GCD
* @Author @浅夜
* @Date 2023/3/21 20:53
* @Version 1.0
*/
public class GCD {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long a = sc.nextLong();
long b = sc.nextLong();
long c = Math.abs(b - a);
long k = c - a%c;
System.out.println(k);
}
// static int gcd(int a, int b) {
// return b == 0 ? a : gcd(b, a % b);
// }
}
🍖🍖🍖选数异或🍖🍖🍖
📋问题描述
📗参考代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
/**
* @ClassName 选数异或
* @Author @浅夜
* @Date 2023/3/21 21:34
* @Version 1.0
*/
public class Main {
public static void main(String[] args) throws IOException, IOException {
Scanner input = new Scanner(System.in);
StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
st.nextToken();
int n = (int) st.nval;
st.nextToken();
int m = (int) st.nval;
st.nextToken();
int x = (int) st.nval;
Map map = new HashMap<Integer, Integer>();
int[] dp = new int[200000];
for (int i = 1; i <= n; i++) {
st.nextToken();
int tmp = (int) st.nval;
dp[i] = Math.max(dp[i - 1], (int) map.getOrDefault(tmp ^ x, Integer.MIN_VALUE));
map.put(tmp, i);
}
for (int i = 0; i < m; i++) {
st.nextToken();
int l = (int) st.nval;
st.nextToken();
int r = (int) st.nval;
if (dp[r] >= l) System.out.println("yes");
else System.out.println("no");
}
}
}