Submission #1067256


Source Code Expand

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

#define MOD 1000000007
#define MAXN 1000

long long num[MAXN];

// nを素因数分解し、各べき指数の数をカウント
void factorization(int n)
{
	int i;

	// 2で割り切れるまで割る
	while (n % 2 == 0) {
		n = n / 2;
		//num[1] = (num[1] + 1) % MOD;
		num[1]++;
	}
	// 3以上nの平方根以下の数で割り切れるまで割る
	for (i = 3; i <= sqrt(n); i += 2) {
		while (n % i == 0) {
			n = n / i;
			//num[i - 1] = (num[i - 1] + 1) % MOD;
			num[i - 1]++;
		}
	}
	if (n > 1) num[n - 1]++;//num[n - 1] = (num[n - 1] + 1) % MOD;
}

int main(void)
{
	long long N;
	long long ans = 1;
	long long i;

	scanf("%lld", &N);

	// 素因数分解
	for (i = 1; i <= N; i++) {
		factorization(i);
	}
	// 約数の個数を求める
	for (i = 1; i < N; i++) {
		ans = (ans * (num[i] + 1)) % MOD;
	}
	printf("%lld\n", ans);

	return (0);
}

Submission Info

Submission Time
Task C - Factors of Factorial
User tosho107
Language C (GCC 5.4.1)
Score 300
Code Size 983 Byte
Status AC
Exec Time 2 ms
Memory 128 KB

Compile Error

./Main.c: In function ‘main’:
./Main.c:39:2: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld", &N);
  ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 3
AC × 7
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All 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 128 KB
sample_02.txt AC 2 ms 128 KB
sample_03.txt AC 2 ms 128 KB
subtask_1_certain_01.txt AC 1 ms 128 KB
subtask_1_certain_02.txt AC 1 ms 128 KB
subtask_1_certain_03.txt AC 2 ms 128 KB
subtask_1_certain_04.txt AC 2 ms 128 KB
subtask_1_rand_01.txt AC 2 ms 128 KB
subtask_1_rand_02.txt AC 2 ms 128 KB
subtask_1_rand_03.txt AC 2 ms 128 KB