2 条题解

  • 0
    @ 2025-12-7 12:58:46

    #include #include using namespace std;

    // 快速幂计算 (a^b) % mod long long mod_pow(long long a, long long b, long long mod) { long long res = 1; a %= mod; // 先对底数取模,减少计算量 while (b > 0) { if (b % 2 == 1) { // 若当前二进制位为1,累积结果 res = (res * a) % mod; } a = (a * a) % mod; // 底数平方并取模 b /= 2; // 指数右移一位(等价于二进制右移) } return res; }

    int main() { int a, b; cin >> a >> b; const int mod = 7; long long remainder = mod_pow(a, b, mod);

    // 余数与星期几的对应关系
    string weekdays[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
    cout << weekdays[remainder] << endl;
    
    return 0;
    

    }

    • 0
      @ 2025-8-24 21:03:14

      自动搬运

      查看原文

      来自洛谷,原作者为

      avatar 一只大龙猫
      嗷~呜!

      搬运于2025-08-24 21:03:13,当前版本为作者最后更新于2021-07-03 15:11:41,作者可能在搬运后再次修改,您可在原文处查看最新版

      自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

      以下是正文


      题目传送门

      对于这道题,如果硬算 aba^b 的话,最大可以达到 10010000100^{10000},显然是不可行的。

      这时,我们可以利用余数的可乘性:

      如果 abmodca\equiv b\mod c,则 $a \times b \mod c =((a \mod c)\times(b \mod c)) \mod c$。

      因此,$x^y \mod 7 \equiv ((x^{y-1} \mod 7)\times(x \mod 7)) \mod 7$。

      (如果想要了解更多,可以看看这篇文章。)

      综上,我们便不难写出代码:

      #include<iostream>
      using namespace std;
      int a,b,ans=1;
      int main(){
      	cin>>a>>b;
      	a%=7;
      	for(int i=1;i<=b;i++){
      		ans*=a;
      		ans%=7;
      	}
      	if(ans==0)cout<<"Sunday";
      	if(ans==1)cout<<"Monday";
      	if(ans==2)cout<<"Tuesday";
      	if(ans==3)cout<<"Wednesday";
      	if(ans==4)cout<<"Thursday";
      	if(ans==5)cout<<"Friday";
      	if(ans==6)cout<<"Saturday";
      	return 0;
      }
      
      
      • 1

      信息

      ID
      6931
      时间
      1000ms
      内存
      128MiB
      难度
      1
      标签
      递交数
      2
      已通过
      2
      上传者