Submission #1694831


Source Code Expand

#include <iostream>
#include <stack>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <string>
#include <vector>
#include <queue>
#include <map>
#include <set>
#include <tuple>
#include <algorithm>
#include <functional>
#include <cstring>
#include <limits.h>
#define FOR(i,k,n)  for (int i=(k); i<(int)(n); ++i)
#define REP(i,n)    FOR(i,0,n)
#define FORIT(i,c)	for(__typeof((c).begin())i=(c).begin();i!=(c).end();++i)
#define SZ(i) ((int)i.size())
#define pb          push_back
#define mp          make_pair
#define mt          make_tuple
#define get0(x)     (get<0>(x))
#define get1(x)     (get<1>(x))
#define get2(x)     (get<2>(x))
#define ALL(X)      (X).begin(),(X).end()
#define LLMAX       9223372036854775807LL
#define LLMIN       -9223372036854775808LL
#define IMAX        2147483647
#define IMIN        -2147483648
typedef long long LL;
using namespace std;
typedef vector<pair<int,int> > vp;

vector<pair<int,int> > primeFactor(int num){ //first->prime,second->pow{
    if(num==1){
        vector<pair<int,int> > r;
        r.push_back(make_pair(1,1));
        return r;
    }
    else{
        vector<pair<int,int> > r;
        for(int i=2;i*i<=num;i++){
            if(num%i==0){
                int p=0;
                while(num%i==0)
                    num/=i,p++;
                r.push_back(make_pair(i,p));
            }
        }
        if(num!=1)
            r.push_back(make_pair(num,1));
        return r;
    }
}

LL mod = 1e9+7;

int main(void){
    int N;
    cin>>N;
    map<int,int> ma;
    FOR(i,2,N+1){
        auto pf = primeFactor(i);
        REP(i,SZ(pf)){
            auto p = pf[i];
            // printf("p.first=%d p.second=%d\n",p.first,p.second);
            ma[p.first]+=p.second;
        }
    }
    LL ans=1;
    for(auto it=ma.begin();it!=ma.end();it++){
        ans*=((*it).second+1);
        ans%=mod;
    }
    cout<<ans<<endl;
    return 0;
}

Submission Info

Submission Time
Task C - Factors of Factorial
User a_kawashiro
Language C++14 (GCC 5.4.1)
Score 300
Code Size 1983 Byte
Status AC
Exec Time 2 ms
Memory 256 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 3
AC × 10
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_certain_01.txt, subtask_1_certain_02.txt, subtask_1_certain_03.txt, subtask_1_certain_04.txt, subtask_1_rand_01.txt, subtask_1_rand_02.txt, subtask_1_rand_03.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
sample_03.txt AC 2 ms 256 KB
subtask_1_certain_01.txt AC 1 ms 256 KB
subtask_1_certain_02.txt AC 1 ms 256 KB
subtask_1_certain_03.txt AC 2 ms 256 KB
subtask_1_certain_04.txt AC 2 ms 256 KB
subtask_1_rand_01.txt AC 2 ms 256 KB
subtask_1_rand_02.txt AC 2 ms 256 KB
subtask_1_rand_03.txt AC 1 ms 256 KB