2 条题解
-
0
#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-08-24 21:03:13,当前版本为作者最后更新于2021-07-03 15:11:41,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
对于这道题,如果硬算 的话,最大可以达到 ,显然是不可行的。
这时,我们可以利用余数的可乘性:
如果 ,则 $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
- 上传者