A题:星期计算
<问题描述>
已知今天是星期六,请问20^22天后星期几?
注意用数字1-7表示星期一到星期日。
<答案提交>
这是一道结果填空题,你只要计算结果后提交即可,本题结果为一个整数。
<解题思路>
大整数应用,计算20^22的值,对7取余。
<方法>
BigInteger
<源代码>
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
BigInteger m=new BigInteger("20");
BigInteger n=new BigInteger("1");
for(int i=1;i<=22;i++)
{
n=n.multiply(m);
}
System.out.println(n.mod(new BigInteger("7")));
}
}
<B题> 山
这天小明在数数,他突然发现有些正整数的形状像一座“山”,比如123565321,145541.他们左右对称(回文)且数位上的数字先单调不减,后单调不增。小明数了很久也没有数完,他想让你告诉他在区间[2022,202222202]中有多少个数的形状像山一样。
<解题方法>暴力枚举
<解题思路>
在区间内一一枚举判断是否是回文数。
<代码实现>
public class Main {
public static void main(String[] args) {
int ans=0;
for(int i=2022;i<=2022222022;++i)
{
if(check(i))
{
ans++;
}
}
System.out.println(ans);
}
public static boolean check(int x)
{
String s=String.valueOf(x); //将其转化为字符串判断
for(int i=0;i<s.length()/2;i++)
{
if(s.charAt(i)!=s.charAt(s.length()-i-1)) //判断是否是回文数
{
return false;
}
}
for(int i=1;i<(s.length()+1)/2;i++) //判断是否是前单调不增后单调不减
{
if(s.charAt(i)<s.charAt(i-1))
{
return false;
}
}
return true;
}
}