Submission #3872432


Source Code Expand

#include <bits/stdc++.h>
#define FOR(i, begin, end) for(int i=(begin);i<(end);i++)
#define REP(i, n) FOR(i,0,n)
#define IFOR(i, begin, end) for(int i=(end)-1;i>=(begin);i--)
#define IREP(i, n) IFOR(i,0,n)
#define SORT(a) sort(a.begin(), a.end())
#define REVERSE(a) reverse(a.begin(), a.end())
#define Lower_bound(v, x) distance(v.begin(), lower_bound(v.begin(), v.end(), x))
#define Upper_bound(v, x) distance(v.begin(), upper_bound(v.begin(), v.end(), x))
#define int long long
#define INF 1000000000000000000
using namespace std;

#define ANS(f) if(f) cout << "YES" << endl; else cout << "NO" << endl;

typedef vector<int> vec;
typedef vector<vec> mat;
typedef pair<int, int> Pii;

template<typename T>
void readv(vector<T> &a){ REP(i, a.size()) cin >> a[i]; }
void readi(vector<int> &a){ REP(i, a.size()){cin >> a[i]; a[i]--;} }
void debug(mat m){REP(i, m.size()){ REP(j, m[i].size()){ cout << m[i][j] << ","; } cout << endl; }}

int modpow(int x, int n, int m){
    int a = 1;
    IREP(i, 64){
        a = (a * a) % m;
        if(((n >> i) & 1) == 1) a = (a * x) % m;
    }
    return a;
}

class Combination
{
public:

    vec fact, invfact;
    int MAX_N, mod;

    Combination(int MAX_N, int mod): MAX_N(MAX_N), mod(mod) {
        initialize();
    }

    void initialize(){
        fact = vec(MAX_N + 1);
        invfact = vec(MAX_N + 1);
        fact[0] = 1;
        FOR(i, 1, MAX_N + 1){
            fact[i] = (fact[i - 1] * i) % mod;
        }
        invfact[MAX_N] = modpow(fact[MAX_N], mod - 2, mod);
        IREP(i, MAX_N){
            invfact[i] = (invfact[i + 1] * (i + 1)) % mod;
        }
    }

    int nCr(int n, int r){
        if(r > n || r < 0 || n < 0) return 0;
        if(n > MAX_N){
            MAX_N = n;
            initialize();
        }
        int a = fact[n];
        a = (a * invfact[r]) % mod;
        a = (a * invfact[n - r]) % mod;
        return a;
    }
};

signed main(){

    int N, M; cin >> N >> M;
    int mod = 1000000007;
    Combination C(M + 100, mod);

    N = llabs(N);
    map<int, int> m;
    FOR(i, 2, 100000){
        while(N % i == 0){
            N /= i;
            m[i] += 1;
        }
    }
    if(N > 1) m[N] += 1;
    
    int ans = 1;
    for(auto p: m){
        ans *= C.nCr(p.second + M - 1, M - 1);
        ans %= mod;
    }
    ans *= modpow(2, M - 1, mod);
    ans %= mod;
    cout << ans << endl;
    
    return 0;
}

Submission Info

Submission Time
Task D - 表現の自由 ( Freedom of expression )
User sumitacchan
Language C++14 (GCC 5.4.1)
Score 100
Code Size 2483 Byte
Status AC
Exec Time 6 ms
Memory 1792 KB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 40
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 6 ms 1792 KB
00_max2.txt AC 6 ms 1792 KB
00_max3.txt AC 6 ms 1792 KB
00_min.txt AC 2 ms 256 KB
00_sample_01.txt AC 2 ms 256 KB
00_sample_02.txt AC 2 ms 256 KB
00_sample_03.txt AC 2 ms 256 KB
00_sample_04.txt AC 2 ms 256 KB
01_rnd_00.txt AC 4 ms 896 KB
01_rnd_01.txt AC 3 ms 384 KB
01_rnd_02.txt AC 2 ms 256 KB
01_rnd_03.txt AC 4 ms 768 KB
01_rnd_04.txt AC 4 ms 768 KB
01_rnd_05.txt AC 4 ms 896 KB
01_rnd_06.txt AC 3 ms 512 KB
01_rnd_07.txt AC 3 ms 512 KB
01_rnd_08.txt AC 6 ms 1792 KB
01_rnd_09.txt AC 4 ms 1152 KB
01_rnd_10.txt AC 5 ms 1152 KB
01_rnd_11.txt AC 5 ms 1280 KB
01_rnd_12.txt AC 6 ms 1664 KB
01_rnd_13.txt AC 4 ms 896 KB
01_rnd_14.txt AC 4 ms 1024 KB
01_rnd_15.txt AC 3 ms 512 KB
01_rnd_16.txt AC 5 ms 1280 KB
01_rnd_17.txt AC 6 ms 1792 KB
01_rnd_18.txt AC 5 ms 1408 KB
01_rnd_19.txt AC 3 ms 384 KB
01_rnd_20.txt AC 4 ms 1024 KB
01_rnd_21.txt AC 4 ms 1024 KB
01_rnd_22.txt AC 3 ms 512 KB
01_rnd_23.txt AC 5 ms 1280 KB
01_rnd_24.txt AC 5 ms 1408 KB
01_rnd_25.txt AC 6 ms 1664 KB
01_rnd_26.txt AC 4 ms 1152 KB
01_rnd_27.txt AC 4 ms 896 KB
01_rnd_28.txt AC 4 ms 896 KB
01_rnd_29.txt AC 6 ms 1664 KB
04_primes_01.txt AC 6 ms 1792 KB
04_primes_02.txt AC 6 ms 1792 KB