文章
27
粉丝
0
获赞
130
访问
8.3k
这个样例通过了42%, 求助哪里出了问题
#include<bits/stdc++.h>
using namespace std;
int main() {
string n, m;
cin>>n>>m;
long long temp, ans;
ans = 1;
temp = 2;
for(int i = n.size() - 1; i >= 0; i--) {
if(n[i] != '0') {
int cnt = n[i] - '0';
long long t = 1;
for(int j = 0; j < cnt; j++) {
t = t * temp % 1000000007;
}
ans = ans * t % 1000000007;
}
&nb...
登录后发布评论
计算逻辑错误
代码的核心逻辑是将大整数 n 按位拆分,然后通过循环计算 2^n。但是,在计算过程中,内层循环和外层循环的逻辑存在问题。具体来说,内层循环 for(int j = 0; j < cnt; j++) 是计算 temp^cnt,这里的 temp 是之前的幂次结果。而外层循环每次将 temp 进行 10 次平方操作 for(int j = 0; j < 10; j++),这不符合快速幂算法的正确逻辑。