Submission #24159
Source Code Expand
// compile with "g++ XXX.cc -mno-cygwin -O2" in Cygwin
#include<iostream>
#include<sstream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<vector>
#include<cmath>
#include<set>
#include<map>
#include<stack>
#include<queue>
#include<numeric>
#include<functional>
#include<complex>
#include<bitset>
#include<cassert>
using namespace std;
#define BET(a,b,c) ((a)<=(b)&&(b)<(c))
#define FOR(i,n) for(int i=0,i##_end=(int(n));i<i##_end;i++)
#define FOR3(i,a,b) for(int i=a,i##_end=b;i<i##_end;i++)
#define FOR_EACH(it,v) for(__typeof(v.begin()) it=v.begin(),it_end=v.end() ; it != it_end ; it++)
#define SZ(x) (int)(x.size())
#define ALL(x) (x).begin(),(x).end()
#define MP make_pair
#define CLS(x,val) memset((x) , val , sizeof(x))
typedef long long ll_t;
typedef long double ld_t;
typedef vector<int> VI;
typedef vector<VI> VVI;
typedef complex<int> xy_t;
template<typename T> void debug(T v , string delimiter = "\n")
{ for(__typeof(v.begin()) it=v.begin(),it_end=v.end() ; it != it_end ; it++) cout << *it << delimiter; cout << flush ;}
int dx[] = {0,1,0,-1};
int dy[] = {1,0,-1,0};
string ds = "SENW";
const double PI = 4.0*atan(1.0);
ll_t exgcd(ll_t a, ll_t b, ll_t &x, ll_t &y)
{
if(b == 0) {
x = 1; y = 0;
return a;
} else {
ll_t d = exgcd(b, a % b, y, x);
y -= a / b * x;
return d;
}
}
// 逆元
ll_t inv(ll_t a, ll_t mod) {
ll_t x, y;
if (exgcd(a, mod, x, y) == 1){
return (x + mod) % mod;
}
else {
return -1;
}
}
ll_t fact[200000];
int mod = 1000000007;
ll_t choose_mod(int s , int t) // O(1) , mod is prime
{
if(s<0 || t<0) return 0 ;
if(s < t) return 0 ;
return fact[s]*inv(fact[t],mod)%mod*inv(fact[s-t],mod)%mod;
}
vector<int> element(int n)
{
VI p ;
for(int x=2;x*x<=n;x++){
int cnt = 0;
while(n % x == 0){
cnt++;
n /= x;
}
if(cnt) p.push_back(cnt);
}
if(n>1) p.push_back(1);
return p;
}
int main() {
fact[0]=1;
FOR(i,200000) if(i) fact[i] = fact[i-1] * i % mod;
ll_t N,M;
cin>>N>>M;
if(N < 0) N = -N;
vector<int> e = element(N);
ll_t base = 1;
if(SZ(e) && M > 1){
FOR(i,SZ(e)){
int all = e[i] + M - 1;
//cout<<all<<" "<<e[i]<<" "<< choose_mod(all , e[i])<<endl;
base *= choose_mod(all , e[i]) * choose_mod(all - e[i] , M - 1) ;
base %= mod;
}
}
//cout<<base<<endl;
ll_t p = 0;
for(int i = 0 ; i <= M ; i += 2){
p = (p + choose_mod(M , i)) % mod;
//cout<<i<<" "<<choose_mod(M , i) <<endl;
}
base = base * p % mod;
cout<<base<<endl;
return 0 ;
}
Submission Info
Judge Result
Set Name |
All |
Score / Max Score |
100 / 100 |
Status |
|
Set Name |
Test Cases |
All |
00_max.txt, 00_max2.txt, 00_max3.txt, 00_min.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 00_sample_04.txt, 01_rnd_00.txt, 01_rnd_01.txt, 01_rnd_02.txt, 01_rnd_03.txt, 01_rnd_04.txt, 01_rnd_05.txt, 01_rnd_06.txt, 01_rnd_07.txt, 01_rnd_08.txt, 01_rnd_09.txt, 01_rnd_10.txt, 01_rnd_11.txt, 01_rnd_12.txt, 01_rnd_13.txt, 01_rnd_14.txt, 01_rnd_15.txt, 01_rnd_16.txt, 01_rnd_17.txt, 01_rnd_18.txt, 01_rnd_19.txt, 01_rnd_20.txt, 01_rnd_21.txt, 01_rnd_22.txt, 01_rnd_23.txt, 01_rnd_24.txt, 01_rnd_25.txt, 01_rnd_26.txt, 01_rnd_27.txt, 01_rnd_28.txt, 01_rnd_29.txt, 04_primes_01.txt, 04_primes_02.txt |
Case Name |
Status |
Exec Time |
Memory |
00_max.txt |
AC |
81 ms |
2308 KB |
00_max2.txt |
AC |
81 ms |
2296 KB |
00_max3.txt |
AC |
81 ms |
2304 KB |
00_min.txt |
AC |
27 ms |
2288 KB |
00_sample_01.txt |
AC |
28 ms |
2304 KB |
00_sample_02.txt |
AC |
29 ms |
2296 KB |
00_sample_03.txt |
AC |
28 ms |
2300 KB |
00_sample_04.txt |
AC |
29 ms |
2292 KB |
01_rnd_00.txt |
AC |
48 ms |
2300 KB |
01_rnd_01.txt |
AC |
35 ms |
2320 KB |
01_rnd_02.txt |
AC |
28 ms |
2324 KB |
01_rnd_03.txt |
AC |
48 ms |
2296 KB |
01_rnd_04.txt |
AC |
44 ms |
2292 KB |
01_rnd_05.txt |
AC |
51 ms |
2316 KB |
01_rnd_06.txt |
AC |
37 ms |
2300 KB |
01_rnd_07.txt |
AC |
37 ms |
2296 KB |
01_rnd_08.txt |
AC |
78 ms |
2300 KB |
01_rnd_09.txt |
AC |
56 ms |
2296 KB |
01_rnd_10.txt |
AC |
59 ms |
2292 KB |
01_rnd_11.txt |
AC |
64 ms |
2296 KB |
01_rnd_12.txt |
AC |
76 ms |
2292 KB |
01_rnd_13.txt |
AC |
52 ms |
2304 KB |
01_rnd_14.txt |
AC |
57 ms |
2300 KB |
01_rnd_15.txt |
AC |
39 ms |
2324 KB |
01_rnd_16.txt |
AC |
65 ms |
2292 KB |
01_rnd_17.txt |
AC |
81 ms |
2296 KB |
01_rnd_18.txt |
AC |
67 ms |
2300 KB |
01_rnd_19.txt |
AC |
35 ms |
2304 KB |
01_rnd_20.txt |
AC |
54 ms |
2272 KB |
01_rnd_21.txt |
AC |
54 ms |
2304 KB |
01_rnd_22.txt |
AC |
40 ms |
2304 KB |
01_rnd_23.txt |
AC |
61 ms |
2296 KB |
01_rnd_24.txt |
AC |
69 ms |
2304 KB |
01_rnd_25.txt |
AC |
75 ms |
2304 KB |
01_rnd_26.txt |
AC |
59 ms |
2308 KB |
01_rnd_27.txt |
AC |
48 ms |
2288 KB |
01_rnd_28.txt |
AC |
52 ms |
2296 KB |
01_rnd_29.txt |
AC |
76 ms |
2300 KB |
04_primes_01.txt |
AC |
81 ms |
2272 KB |
04_primes_02.txt |
AC |
81 ms |
2300 KB |