第十三届省赛 c++ B组填空题
System.out.println((2*9*9*9) + (2*9) + 2);
import java.util.*;
public class Main {
static int[] months = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
static boolean check1(int x) {
int day = x % 100;
int m = x / 100 % 100;
if (m < 1 || m > 12 || day == 0) return false;
if (day > months[m]) return false;
return true;
}
// 检查四位数是否包含连续的三位数
public static boolean checkConsecutive(int number) {
int[] digits = new int[4]; // 数字数组,存储四位数的各个位
// 将四位数的各个位存储到数组中
for (int i = 3; i >= 0; i--) {
digits[i] = number % 10;
number /= 10;
}
// 检查是否存在连续的三个数字
for (int i = 0; i < 2; i++) {
if (digits[i] + 1 == digits[i + 1] && digits[i] + 2 == digits[i + 2]) {
return true;
}
}
return false;
}
public static void main(String[] args) {
int res = 0;
for (int i = 0; i <= 9999; i++) {
if (check1(i)) {
if ( checkConsecutive(i)) {
res++;
}
}
}
System.out.println(res);
}
}
第十三届省赛 c++ C组填空题
public class Main {
private static char[] mergeSort(char[] arr, int left, int right) {
if (left >= right) {
return arr;
}
int mid = (left + right) / 2;
arr = mergeSort(arr, left, mid);
arr = mergeSort(arr, mid + 1, right);
char[] temp = new char[right - left + 1];
int i = left;
int j = mid + 1;
int k = 0;
while (i <= mid && j <= right) {
if (arr[i] <= arr[j]) {
temp[k++] = arr[i++];
} else {
temp[k++] = arr[j++];
}
}
while (i <= mid) {//判断左半边的数组还有没有剩
temp[k++] = arr[i++];
}
while (j <= right) {//判断右半边的数组还有没有剩
temp[k++] = arr[j++];
}
for (i = left, j = 0; i <= right; i++, j++) {//复制回自己的数组
arr[i] = temp[j];
}
return arr;
}
public static void main(String[] args) {
String a = "WHERETHEREISAWILLTHEREISAWAY";
char[] chars = a.toCharArray();
mergeSort(chars,0,chars.length - 1);
String s = new String(chars);
System.out.println(s);
}
}
public class Main {
/*
01 共64种
年: 0111 1011 1101 1110
月日:0111 1011 1101 1110
分秒:0111 1011 1101 1110
02 共16种
年:0222 2022 2202 2220
月日:0222
分秒:0222 2022 2202 2220
12 共16种
年:1222 2122 2212 2221
月日:1222
分秒:1222 2122 2212 2221
21 共48种
年:2111 1211 1121 1112
月日:2111 1211 1112
分秒:2111 1211 1121 1112
31 共12种
年:1113 1131 1311 3111
月日:1113
分秒:1113 1131 1311
41 共12种
年:1114 1141 1411 4111
月日:1114
分秒:1114 1141 1411
51 共12种
年:1115 1151 1511 5111
月日:1115
分秒:1115 1151 1511
61 共8种
年:1116 1161 1611 6111
月日:1116
分秒:1116 1161 1611
71 共8种
年:1117 1171 1711 7111
月日:1117
分秒:1117 1171 1711
81 共8种
年:1118 1181 1811 8111
月日:1118
分秒:1118 1181 1811
91 共8种
年:1119 1191 1911 9111
月日:1119
分秒:1119 1191 1911
*/
static int[] days = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
static int yearCnt, monthCnt, timeCnt;
static boolean isLeap(int y) {
return (y % 400 == 0) || (y % 4 == 0 && y % 100 != 0);
}
static void check(String num) {
int year = Integer.parseInt(num);
if (isLeap(year)) {
days[2] = 29;
} else {
days[2] = 28;
}
int month = year / 100, day = year % 100;
int hour = month, minute = day;
if (year > 0) {
++yearCnt;
}
if (month > 0 && month < 13 && day > 0 && day <= days[month]) {
++monthCnt;
}
if (hour > 0 && hour < 25 && minute >= 0 && minute < 60) {
++timeCnt;
}
}
public static void main(String[] args) {
int ans = 0;
for (int n1 = 0; n1 <= 9; ++n1) {
for (int n2 = 0; n2 <= 9; ++n2) {
if (n1 == n2) {
continue;
}
yearCnt = 0;
monthCnt = 0;
timeCnt = 0;
for (int i = 0; i < 4; ++i) {
StringBuilder num = new StringBuilder("0000");
num.setCharAt(i, (char) (n1 + '0'));
num.setCharAt((i + 1) % 4, (char) (n2 + '0'));
num.setCharAt((i + 2) % 4, (char) (n2 + '0'));
num.setCharAt((i + 3) % 4, (char) (n2 + '0'));
check(num.toString());
}
ans += yearCnt * monthCnt * timeCnt;
}
}
System.out.println(ans);
}
}
第十三届省赛 java B组填空题
public class Main {
static int[] months = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
public static int qmi(int a,int k,int q){
int res = 1;//记录答案
//执行到k为0结束
while (k != 0){
//判断一下k的二进制最后一位是1还是0,如果是1执行下面的语句,说明他有这个a的2的几次方
if((k & 1) == 1) res = (int)((long)res * a % q);
k >>= 1; //每一次将k的二进制向右移动一位,等待下次判断
a = (int)((long)a * a % q); //我们先预处理出来a的2的0至log(k)次方,然后使用这些预处理出来的数进行相乘
}
return res;
}
public static void main(String[] args) {
BigInteger bigInteger=new BigInteger("20");
BigInteger bigInteger1=bigInteger.pow(22);
BigInteger x = bigInteger1.remainder(new BigInteger("7"));//mod
BigInteger y=x.add(new BigInteger("6"));
System.out.println(y);
//System.out.println( 6 + qmi(20,22,7));
}
}
import java.util.*;
public class Main {
static boolean check(int x){
String s = String.valueOf(x);
int length = s.length();
int mid = (length - 1) / 2; // 中间位置
int i = 0;
int j = mid; // 从中间开始向左右遍历
while(i < mid && j < length - 1){
if(s.charAt(i) > s.charAt(i+1) || s.charAt(j) < s.charAt(j+1)) return false;
i++; j++;
}
return true;
}
static boolean check2(int x){
String s = String.valueOf(x);
int i = 0;
int j = s.length() - 1;
while(i < j){
if(s.charAt(i) != s.charAt(j)) return false;
i++;
j--;
}
return true;
}
public static void main(String[] args) {
int res = 0;
for (int i = 2022; i <= 2022222022; i++) { // 修改区间的上限
if( check2(i) && check(i)){
res++;
}
}
System.out.println(res);
}
}