#include using namespace std; vector decimal_to_binary(long long N){ vector result; while(N != 0){ result.insert(result.begin(),N%2); N = N/2; } return result; } //a^n mod pの高速計算 //O(log p) long long calc_modulo_p(long long a,long long n,long long p){ a = a%p; n = n%(p-1); vector binary = decimal_to_binary(n); long long x = a; long long result = 1; int N = binary.size(); for(int i=0;i binary = decimal_to_binary(n); long long x = a; long long result = 1; int N = binary.size(); for(int i=0;i > prime_factorize(long long N) { vector > res; for (long long p = 2; p * p <= N; ++p) { if (N % p != 0) { continue; } int e = 0; while (N % p == 0) { ++e; N /= p; } res.emplace_back(p, e); } if (N != 1) { res.emplace_back(N, 1); } return res; } void vector_output(vector v){ cout << "{ "; for(int i=0;i> v){ cout << "{ "; for(int i=0;i &P ,vector &X,vector &result_p ,vector &result_x){ vector> result; vector> pairs; for(int i=0;i> work; work = prime_factorize(P[i]+1); for(int j=0;j> N >> K; vector> factor = prime_factorize(N); vector p,x,p0,x0; for(int i=0;i