1724: 结束了(hard version)
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:0
解决:18
题目描述
小m的大学生涯很快就到了毕业的时候,此时,他感叹大学生涯过的好快啊,然后自己又留下来学一年实际上挂科延毕了
他想起来,那一年,自己向一个女孩子表白,那个女孩子回给自己了一段程序;同一年,又向一个女孩子表白,那个女孩子给了自己一道题。想到这,他恍然大悟,原来女生都是喜欢做题的啊,这次他准备万全,准备最后一次告白。
“嘿,小s,你知道lcm嘛?”
“?”
“lcm就是最小公倍数啦~”
“?”
接着小m又说了很多很多,但是小s对那些并没有兴趣,小s只是想着怎么才能免费喝杯奶茶。不过小m丝毫不慌,拿出自己的mpad2021 pro max plus plus 上面写着
“我延毕了,因为我想着这样就能和你一起毕业了。”
小s在等着下一句话。
“为了以防你也延毕,让我们一起来解答这个问题吧。”
…
只能接受能把自己的容量整除的数量。现在国王想尽可能多的收税,但是不想提供过多的容量,请你给出一个最小的容量数吧~”
小s不关注题是什么,小s只想喝奶茶。现在小s把题目给你了,请你把答案告诉她吧~
输入
一个整数n。(1<= n <= 1e8)
输出
一个整数表示最小的容量数。由于答案可能过大,请把答案对1e9+7取模。
样例输入 复制
3
样例输出 复制
6
提示
输入样例
20
输出样例
232792560
另外还担心小s可能不会线性时间筛素数,直接把线性筛素数的代码也给你了,他真的不想让小s延毕啊延毕了自己又得再延一年才能一起毕业了。
//C++ 使用C++的话推荐手动开启O2优化 #pragma GCC optimize("O2") const int max_n = 1e8 + 100; int primes[6000000], id = 0; bool used[max_n]; //primes里面存的素数,used[i] == 0 代表i是素数 id代表素数的数量 运行完init() 函数之后 直接用这几个数组然后提交的时候选择 C++ 就行了 void init(int n) { for (int i = 2; i <= n; i++) { if (!used[i]) primes[id++] = i; for (int j = 0; j < id && i * primes[j] <= n; j++) { used[i * primes[j]] = true; if (i % primes[j] == 0) break; } } }