Submission #62137707


Source Code Expand

/*
特辣的海藻!!!!!
*/
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ll long long
#define ull unsigned long long
int MOD;
inline ull qsc(ll a,ll b){
	ll z=(long double)a/MOD*b;
	ll res=(ull)a*b-(ull)z*MOD;
	return (res+MOD)%MOD;
}
inline int qp(int p,int q){
	int ans = 1,pro = p;
	while(q){
		if(q&1)ans = qsc(ans,pro);//(__int128)ans*pro%mod;
		//pro = (__int128)pro*pro%mod;
		pro = qsc(pro,pro);
		q>>=1;
	}
	return ans;
}
vector<int>p;
int n;
int phi;

unordered_map<int,pair<int,int> >mp;
void fenjie(int x,vector<int>& p){
	for(int i = 2;i*i<=x;i++)while(x%i == 0)p.push_back(i),x/=i;
	if(x>1)p.push_back(x);
}
int calc(int x){
	int pro = 1;
	for(int i = 2;i*i<=x;i++){
		if(x%i==0){
			int cc =0 ;
			while(x%i == 0)x/=i,cc++;
			pro = pro*(i-1);fenjie(i-1,p);
			for(int j = 1;j<2*cc;j++)pro = pro*i,fenjie(i,p);
		}
	}
	if(x>1){
		pro = pro*x*(x-1);
		fenjie(x,p),fenjie(x-1,p);
	}
	return pro;
}
int Calc(int X){
	int pro = phi;
	for(auto x:p)if(qp(X,pro/x)==1)pro/=x;
//	assert(qp(X,pro,MOD)==1);
	return pro;
}
void solve(){
	cin >> n;
	if(mp.count(n)){
		auto e = mp[n];
		cout<<e.first<<" "<<e.second <<endl;
		return;
	}
	if(n==1){cout << 1 << " " << 2 << '\n';return;}
	p.clear();
	phi = calc(n);
	int tt = 0,now = 1;
	MOD = n*n;
	while(1){
		++now;
		if(__gcd(now,n)!=1)continue;
		++tt;
		int vv = Calc(now);
		if(vv%n == 0){
			int res = qp(now,vv/n);
			cout << res << " " << MOD << '\n';
			mp[n] = {res,MOD};
			return;
		}
	}
}
signed main(){
	srand(time(0));
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int t=10000;cin >> t;
	while(t--){
		solve();
	}
}/*

4
3
16
1
55

*/

Submission Info

Submission Time
Task C - A^n - 1
User juan_123
Language C++ 20 (gcc 12.2)
Score 600
Code Size 1741 Byte
Status AC
Exec Time 1977 ms
Memory 4296 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 1
AC × 22
Set Name Test Cases
Sample 00_sample_00.txt
All 00_sample_00.txt, 01_small_00.txt, 01_small_01.txt, 01_small_02.txt, 01_small_03.txt, 02_large_00.txt, 02_large_01.txt, 02_large_02.txt, 02_large_03.txt, 02_large_04.txt, 03_divisior_00.txt, 03_divisior_01.txt, 04_kN_1_00.txt, 04_kN_1_01.txt, 04_kN_1_02.txt, 05_prime_00.txt, 05_prime_01.txt, 05_prime_02.txt, 05_prime_03.txt, 05_prime_04.txt, 05_prime_05.txt, 06_random_00.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3740 KiB
01_small_00.txt AC 38 ms 4176 KiB
01_small_01.txt AC 49 ms 4176 KiB
01_small_02.txt AC 53 ms 4292 KiB
01_small_03.txt AC 2 ms 3628 KiB
02_large_00.txt AC 433 ms 4144 KiB
02_large_01.txt AC 432 ms 4228 KiB
02_large_02.txt AC 441 ms 4208 KiB
02_large_03.txt AC 12 ms 3612 KiB
02_large_04.txt AC 13 ms 3524 KiB
03_divisior_00.txt AC 15 ms 3692 KiB
03_divisior_01.txt AC 171 ms 3980 KiB
04_kN_1_00.txt AC 660 ms 4212 KiB
04_kN_1_01.txt AC 50 ms 3588 KiB
04_kN_1_02.txt AC 12 ms 3680 KiB
05_prime_00.txt AC 45 ms 4296 KiB
05_prime_01.txt AC 63 ms 4160 KiB
05_prime_02.txt AC 63 ms 4288 KiB
05_prime_03.txt AC 1977 ms 4164 KiB
05_prime_04.txt AC 344 ms 4148 KiB
05_prime_05.txt AC 343 ms 4108 KiB
06_random_00.txt AC 331 ms 4112 KiB