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;
  }
}

<答案>3138