Submission #23601


Source Code Expand

#include <cstdio>
#include <iostream>
#include <sstream>
#include <iomanip>
#include <algorithm>
#include <cmath>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <bitset>
#include <numeric>
#include <climits>
#include <cfloat>
using namespace std;

void integerFactorization(int n, vector<int>& base, vector<int>& expo)
{
    base.clear();
    expo.clear();
    int a = 2;
    while(a * a <= n){
        int b = 0;
        while(n % a == 0){
            ++ b;
            n /= a;
        }
        if(b > 0){
            base.push_back(a);
            expo.push_back(b);
        }
        ++ a;
    }
    if(n > 1 || base.size() == 0){
        base.push_back(n);
        expo.push_back(1);
    }
}

class Mod
{
    static const int MOD = 1000000007;
    long long a;
public:
    Mod(){
        a = 0;
    }
    Mod(long long x){
        a = (x % MOD + MOD) % MOD;
    }
    const Mod operator+(const Mod& x) const{
        return Mod(a + x.a);
    }
    const Mod operator-(const Mod& x) const{
        return Mod(a - x.a);
    }
    const Mod operator*(const Mod& x) const{
        return Mod(a * x.a);
    }
    const Mod operator/(const Mod& x) const{ // フェルマーの小定理、x.aがMODと互いに素な場合のみ有効
        int b = MOD - 2;
        long long c = x.a;
        long long ret = 1;
        while(b > 0){
            if(b & 1){
                ret *= c;
                ret %= MOD;
            }
            c *= c;
            c %= MOD;
            b >>= 1;
        }
        return Mod(a * ret);
    }
    long long getValue(){
        return a;
    }
};

Mod combination(int n, int r) // 組合せ
{
    Mod ret(1);
    for(int i=0; i<r; i++){
        ret = ret * n;
        n = n - 1;
        ret = ret / (i+1);
    }
    return ret;
}

Mod homogeneous(int n, int r) // 重複組合せ
{
    return combination(n+r-1,r);
}

int main()
{
    int n, m;
    cin >> n >> m;

    bool minus = false;
    if(n < 0){
        minus = true;
        n *= -1;
    }

    vector<int> base, expo;
    integerFactorization(n, base, expo);

    Mod ret(1);
    for(unsigned i=0; i<expo.size(); ++i){
        if(base[i] != 1)
            ret = ret * homogeneous(m, expo[i]);
    }

    Mod x(1);
    for(int i=0; i<m-1; ++i)
        x = x * 2;

    ret = ret * x;

    cout << ret.getValue() << endl;

    return 0;
}

Submission Info

Submission Time
Task D - 表現の自由 ( Freedom of expression )
User mamekin
Language C++ (G++ 4.6.4)
Score 100
Code Size 2539 Byte
Status AC
Exec Time 29 ms
Memory 828 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 24 ms 760 KB
00_max2.txt AC 23 ms 788 KB
00_max3.txt AC 24 ms 740 KB
00_min.txt AC 26 ms 788 KB
00_sample_01.txt AC 22 ms 792 KB
00_sample_02.txt AC 29 ms 756 KB
00_sample_03.txt AC 22 ms 768 KB
00_sample_04.txt AC 22 ms 788 KB
01_rnd_00.txt AC 22 ms 736 KB
01_rnd_01.txt AC 21 ms 796 KB
01_rnd_02.txt AC 21 ms 820 KB
01_rnd_03.txt AC 21 ms 788 KB
01_rnd_04.txt AC 21 ms 784 KB
01_rnd_05.txt AC 22 ms 788 KB
01_rnd_06.txt AC 21 ms 784 KB
01_rnd_07.txt AC 21 ms 792 KB
01_rnd_08.txt AC 23 ms 792 KB
01_rnd_09.txt AC 22 ms 788 KB
01_rnd_10.txt AC 22 ms 828 KB
01_rnd_11.txt AC 22 ms 796 KB
01_rnd_12.txt AC 22 ms 796 KB
01_rnd_13.txt AC 22 ms 764 KB
01_rnd_14.txt AC 22 ms 764 KB
01_rnd_15.txt AC 21 ms 796 KB
01_rnd_16.txt AC 22 ms 796 KB
01_rnd_17.txt AC 23 ms 736 KB
01_rnd_18.txt AC 22 ms 792 KB
01_rnd_19.txt AC 21 ms 756 KB
01_rnd_20.txt AC 22 ms 812 KB
01_rnd_21.txt AC 22 ms 796 KB
01_rnd_22.txt AC 22 ms 788 KB
01_rnd_23.txt AC 22 ms 780 KB
01_rnd_24.txt AC 22 ms 784 KB
01_rnd_25.txt AC 22 ms 792 KB
01_rnd_26.txt AC 22 ms 788 KB
01_rnd_27.txt AC 21 ms 788 KB
01_rnd_28.txt AC 21 ms 812 KB
01_rnd_29.txt AC 23 ms 784 KB
04_primes_01.txt AC 22 ms 788 KB
04_primes_02.txt AC 23 ms 796 KB