T4乘积WA30分求调(本人乘法不会QWQ)

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k,b=2,mod=10000007,ans=1;
int a[100],f[100][100];
long long qp(int a, int b){
	int ans=1,base=a;
	while(b){
		if(b&1) ans=ans*base%mod;
        base=base*base%mod;
		b>>=1;
	}
	return ans;
}
int solve(int n){
	if(n==0) return 0;
	int cnt=0;
	while(n){
		a[++cnt]=n%b;
		n/=b;
	}
	int ans=0,last=0;
	for(int i=cnt;i>=1;i--){
		int now=a[i];
		if(now!=0){
			ans+=f[i-1][k-last];
			if(now==1){
				last++;
			}
			else{
				ans+=f[i-1][k-last-1];
			}
			if(now>1 || last>k) break;
		}
		if(i==1 && last==k) ans++;
	}
	return ans;
}
signed main(){
	cin>>n;
	f[0][0]=1;
	for(int i=1;i<=70;i++){
		f[i][0]=1;
		for(int j=1;j<=i;j++) f[i][j]=f[i-1][j]+f[i-1][j-1];
	}
	for(k=1;k<=64;k++){
		ans=qp(k,solve(n)%mod)*ans%mod;
	}
	cout<<ans;
	return 0;
}

代码吃操作,请慎用

题面:
image

@俞天行 @CZF2919 @charlieqi @LeuR @郑彦鑫 @所有人

帮帮这个可怜的孩子(也是帮我)

solve(n)%mod是什么

@曾天云 他A了

你帮我看吧

这个逻辑看似不通

老师,他好像过了

把帖子关了吧

你的在哪里

@张梓瑞 请问你WA那些点