Submission #2306823


Source Code Expand

#include <iostream>
#include <algorithm>
#include <string>
#include <string.h>
#include <queue>
#include <map>
#include <utility>
#include<math.h>
#include <iomanip>
#include<vector>
#define ll long long
#define ull unsigned long long
#include<numeric>
#include <map>
using namespace std;
int n;
#define maxSiz 1000
int is_prime[maxSiz+5];
vector <int> primes;
void sieve(int siz=maxSiz){
    primes.clear();
    memset(is_prime,true,sizeof is_prime);
    is_prime[0]=is_prime[1]=false;
    for(int i=4;i<=siz;i+=2) is_prime[i]=false;
    for(int i=3;i*i<=siz;i+=2) if(is_prime[i]) for(int j=i*2;j<=siz;j+=i) is_prime[j]=false;
    for(int i=0;i<=siz;i++)if(is_prime[i]) primes.push_back(i);
}

int factN_pow(int n,long long p){
    int prime=p;
    int cnt=0;
    while(p<=n){
        cnt+=(n/p);
        p*=prime;
    }
    return cnt;
}

vector <pair<int,int> > num_fact;
void numFact(int m){
    num_fact.clear();
    int cnt=0;
    for(int i=0;i<primes.size() && primes[i]*primes[i]<=m;i++){
        if(m%primes[i]==0){
            cnt=0;
            while(m%primes[i]==0){
                cnt++;
                m/=primes[i];
            }
            num_fact.push_back(make_pair(primes[i],cnt));
        }
    }
    if(m>1) num_fact.push_back(make_pair(m,1));

}
int factPrimePower(int prime,int n){
    int ret=0;
    for(int i=prime;i<=n;i*=prime) ret+=n/i;
    return ret;
}

vector <pair<int,int> >fact_factorization;
int arr_fact[1000];
void factFactorization(int num){
    memset(arr_fact,-1,sizeof arr_fact);
    fact_factorization.clear();
    int temp;
    for(int i=0;i<primes.size() && primes[i]<=num;i++){
        temp=factPrimePower(primes[i],num);
        if(temp) arr_fact[primes[i]]=fact_factorization.size(),fact_factorization.push_back(make_pair(primes[i],temp));
    }

}


int main()
{
    std::ios::sync_with_stdio(false);
    cin>>n;
    sieve();
    factFactorization(n);
    long long ans=1;

    for(int i=0;i<fact_factorization.size();i++){
        ans=(ans*(fact_factorization[i].second+1))%(1000000000+7);
    }
    cout<<ans<<endl;
    return 0;
}

Submission Info

Submission Time
Task C - Factors of Factorial
User vjudge3
Language C++14 (GCC 5.4.1)
Score 300
Code Size 2085 Byte
Status AC
Exec Time 1 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 1 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 1 ms 256 KB
subtask_1_certain_04.txt AC 1 ms 256 KB
subtask_1_rand_01.txt AC 1 ms 256 KB
subtask_1_rand_02.txt AC 1 ms 256 KB
subtask_1_rand_03.txt AC 1 ms 256 KB