题目描述
chen_03 会制造电脑病毒。
有人把 Jay 的电脑植入了病毒,而要解除病毒,Jay 要回答一道题。
在电脑屏幕上有一个数 ,Jay 被要求输入一个正整数,这个数能被 内所有数整除,并且要保持这个数最小,因为这个数可能很大,所以只要输出对 取模的结果就行了。
然而 Jay 成功的破解了病毒,并将病毒植入了你的电脑上。
然后你就不得不开始解这道题。
输入格式
输入一个正整数 。
输出格式
输出一个正整数表示答案。
样例
样例输入复制
10
样例输出复制
2520
数据范围与提示
此题采取子任务形式,每个子任务取最小值意思是你 WA 一个点整个子任务就 0 分。
对于全部数据,。
Subtask #1 (37.5 points):。
Subtask #2 (25 points):。
Subtask #3 (37.5 points):无特殊性质。
分类标签
题解:
#include <bits/stdc++.h>
using namespace std;
const int N = 75000000;
const int MOD = 1e9 + 7;
typedef long long LL;
#define re register
int p[N];
bool st[100000010];
LL n, cnt = 0;
LL ans = 1;
int main() {
freopen("virus.in", "r", stdin);
freopen("virus.out", "w", stdout);
cin >> n;
for (re LL i = 2; i <= n; i++) {
if (!st[i]) {
p[++cnt] = i;
for (re LL j = i; j <= n; j *= i) ans = (ans * i) % MOD;
}
for (re LL j = 1; p[j] * i <= n; ++j) {
st[i * p[j]] = true;
if (i % p[j] == 0)
break;
}
}
cout << ans << endl;
return 0;
}