2023 牛客国庆day4 【10.2训练补题】

 

目录

B-Basic Gcd Problem(素数筛+快速幂)

H-Harder Gcd Problem(素数)


 B-Basic Gcd Problem(素数筛+快速幂)

打表找规律发现答案为 (n质因子数目)^c 

#include
using namespace std;
const int N=1e6+5;
typedef long long ll;
typedef unsigned long long ull;
typedef pair pi;
const int inf=1<<30;
const ll mod=1e9+7;
inline void read(ll &x){
	ll f=1;
	x=0;
	char ch=getchar();
	while(ch<'0'||'9'>=1;
		b=b*b%mod;
	}return res;
}
int main(){
	init();
	read(T);
	while(T--){
		read(n);read(c);
		printf("%lld\n",quickp(c,ct[n]));
	}
	return 0;
} 

 

H-Harder Gcd Problem(素数)

参考题解:

【2020年牛客暑假第四场】H题 Harder Gcd Problem_2020牛客第四场 h题-CSDN博客

*所有数字都可由素数与其他数字相乘得到

*注意 v[ i ]标记时机

*偶数是素数2的倍数无需特判

#include
using namespace std;
const int N=2e5+5;
typedef long long ll;
typedef unsigned long long ull;
typedef pair pi;
const int inf=1<<30;
const ll mod=1e9+7;
inline void read(int &x){
	int f=1;
	x=0;
	char ch=getchar();
	while(ch<'0'||'9'res;
vectortmp;
int main(){
	read(T);
	init();
	while(T--){
		read(n);
		for(int i=2;i<=n;i++)v[i]=1;
		int ani;
		for(int i=1;su[i]*2<=n;i++)ani=i;
		for(int i=ani;i>0;i--){
			tmp.clear();
			for(int j=1;j*su[i]<=n;j++){
				int t=j*su[i];
				if(v[t]){
					tmp.push_back(t);
				}
			}
			int sz=tmp.size();
			if(sz&1){
				swap(tmp[1],tmp[sz-1]);
			}
			for(int j=0;j+1

你可能感兴趣的:(训练赛,算法)