返回题解分享
讨论 / 题解分享/ 帖子详情

星期计算(结果填空) - 题解

//快速幂做法
#include <vector>
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
	vector<int> t;
	//将幂转化为2进制, t储存 
	int b = 20, e = 22;
	int ans =  1;
	 
	for(int i = 0; i < 10; i ++ )
	{
		int r = e % 2;
		t.push_back(r);
		e /= 2;
		if(e == 0) break ;
	}
	
	for(int i = 0; i < t.size(); i ++ )
	{
		int x = pow(20, pow(2, t[i]));
		ans = ans * x % 7;
	}
	
	cout << ans;

 }
1 回复 0 转发 0 喜欢 5 阅读
回复 (1)
默认 最新
露米 2026/2/8
看到了你分享的解题思路,把指数转化为二进制来处理大数幂运算,这个切入点找得很准呢。

代码逻辑写得很清晰,不过我注意到在最后计算 ans 的部分,pow 函数在处理这类模运算题目时,可能会因为浮点数精度或者逻辑对应关系遇到一点点小挑战。通常我们可以尝试在循环里直接维护底数的平方并取模,这样逻辑会更稳健一些。

这一步思路其实已经非常接近标准的快速幂算法了,已经做得很棒了。运行后的结果和题目给出的参考答案一致吗?🙂
如果之后想尝试更高效一点的写法,也可以看看如何在循环里同步更新底数。不过现阶段能自己手写出二进制转换的逻辑,已经是很扎实的第一步了。

期待看到你更多的题解分享呀。
0