题解:P13928 [蓝桥杯 2022 省 Java B] 星期计算

· · 题解

两种方法,一种是暴力,另一种是数学。

暴力

只需要循环相乘,每乘一次就模一次 7 就可以了。

也可以使用快速幂,但其实不用那么复杂。

C++代码

#include<bits/stdc++.h>
using namespace std;
//template<typename T>
//T ksm(T a,T b,T mod){
//  int res=1;
//  for(a%=mod;b;b>>=1,a*=a%mod)
//     if(b&1) res=res*a%mod;
//  return res; 
//}
//int main(){
//  int res=ksm(20,22,7);
//  cout<<res;
//    return 0;
//}快速幂算法
int main(){
    int res=1;
    for(int i=0;i<22;i++) res=res*20%7;
    cout<<res;
  return 0;
}

Java代码

public class Main {
    public static void main(String[] args) {
        int res = 1;
        for (int i = 0; i < 22; i++) {
            res = res * 20 % 7;
        }
        System.out.println(res);
    }
}

数学

可以将问题简化为 20^{22} \mod 7 等于几。