「2020-03-08 普及模拟赛」病毒 (virus)题解

题目描述

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;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值