TLE 求助
查看原帖
TLE 求助
675466
zzx0102楼主2023/3/5 20:57

exgcd 80 分,快速幂 64 分。。。

exgcd:

#include<bits/stdc++.h>
using namespace std;
long long x, y;
#define pc putchar
inline void write(long long x) {if(x > 9) write(x / 10); pc(x % 10 + '0');}
void exgcd(long long a, long long b) {
	if(!b) {x = 1; y = 0; return ;}
	exgcd(b, a % b); long long tx = x; x = y; y = tx - a / b * y; 
}
int main() {
	long long n, p; cin >> n >> p;
	for(long long i = 1; i <= n; i++) {
		exgcd(i, p); long long ans = (x % p + p) % p; write(ans); pc('\n');
	}
	return 0;
}

快速幂:

#include<bits/stdc++.h>
using namespace std;
#define int long long
int x, y;
#define pc putchar
inline void write(int x) {if(x > 9) write(x / 10); pc(x % 10 + '0');}
inline int Pow(int a, int b, int p) {
	int ans = 1;
	while(b) {
		if(b & 1) ans = ans * a % p;
		a = a * a % p;
		b >>= 1;
	}
	return ans;
}
signed main() {
	int n, p; cin >> n >> p;
	for(int i = 1; i <= n; i++) {
		int ans = Pow(i, p - 2, p); write(ans); pc('\n');
	}
	return 0;
}

都开了 C++20 O2

2023/3/5 20:57
加载中...