Submission #2205179


Source Code Expand

#include<bits/stdc++.h>
#define REP(i,n) for(int i=0;i<n;i++)
#define LOOP(i,x,n) for(int i=x;i<n;i++)
#define ALL(v) (v).begin(),(v).end()
#define PB push_back
#define MP make_pair
#define F first
#define S second
#define int long long

using namespace std;
const int MOD=1000000007;
const int INF=1000000000;
const double eps=1e-10;

bool Is_Prime(int n){
  if(n==1) return false;
  else if(n==2)return true;
  else if(n%2==0)return false;

  for(int i=3;i*i<=n;i+=2){
    if(n%i==0)return false;
  }
  return true;
}
map<int,int> prime_fac(int n){
  map<int,int> ret;
  for(int i=2;i*i<=n;i++){
    while(n%i==0){
      ret[i]++;
      n/=i;
    }
  }
  if(n!=1)ret[n]=1;
  return ret;
}

signed main(){
  int n;
  cin>>n;
  map<int,int> mp;
  LOOP(i,2,n+1){
    if(Is_Prime(i))mp[i]++;
    else{
      map<int,int> p=prime_fac(i);
      for(auto x:p){
        mp[x.F]+=x.S;
      }
    }
  }
  int ans=1;
  for(auto x:mp){
    //cout<<x.F<<' '<<x.S<<endl;
    ans*=(x.S+1);
    ans%=MOD;
  }
  cout<<ans<<endl;
  return 0;
}

Submission Info

Submission Time
Task C - Factors of Factorial
User fuu32
Language C++14 (GCC 5.4.1)
Score 300
Code Size 1088 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