求助区分
  • 板块灌水区
  • 楼主崔化博
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/6/3 15:55
  • 上次更新2023/10/28 00:01:56
查看原帖
求助区分
304524
崔化博楼主2022/6/3 15:55

本人在做一道题时,第一份龟速幂没过,第二份__int128+快速幂过了,求助有什么不一样的。

#include <iostream>
#include <cstring>
#include <vector>
#include <cmath>
#define int long long
#define mod 1000000000007
using namespace std;
int n,m;
int mul(int a,int b){
	int res=0;
	while(b){
		if(b&1)res=(res+a)%mod;
		a=(a<<1)%mod;
		b>>=1;
	}
	return res;
}
int poww(int a,int b){
	int res=1;
	while(b){
		if(b&1)res=mul(res,a);
		a=mul(a,a);
		b>>=1;
	}
	return res;
}
signed main(){
	cin>>n>>m;
	cout<<((poww(m,n)-m*poww(m-1,n-1))%mod+mod)%mod;
    return 0;
}
#include <iostream>
#include <cstring>
#include <vector>
#include <cmath>
#define mod 1000000000007
#define _int __int128
using namespace std;
long long n,m;
void print(_int a){
	if(a>9)
		print(a/10);
	putchar(a%10+'0');
}
_int poww(_int a,_int b){
	_int res=1;
	while(b){
		if(b&1)res=res*a%mod;
		a=a*a%mod;
		b>>=1;
	}
	return res;
}
int main(){
	cin>>n>>m;
	print(((poww(m,n)-m*poww(m-1,n-1))%mod+mod)%mod);
    return 0;
}
2022/6/3 15:55
加载中...