首页 > 其他分享 >AT2286 题解

AT2286 题解

时间:2022-08-25 00:02:36浏览次数:77  
标签:AT2286 int 题解 质数 flag 1005 true

题目传送门

小学生又双叒叕来写题解啦!

这题要用到因数个数定理,没学过的童鞋自己了解一下。

由于和质数有关,我使用质数筛法

我使用较快的欧拉筛法算质数(想学就做这题)。

事实上,由于范围不大,使用普通的埃氏筛也行。

最后一个问题是:枚举质因数个数。

相信这不难,只需暴力分解质因数即可。

把上文提到的三个模块结合起来即可。

送上AC代码

#include <iostream>
#include <cstdio>
#define MOD (int)(1e9 + 7)
using namespace std;
int p[1005], cur;
bool flag[1005]; //true 是合数,false 是质数。 
void ES(int n)
//欧拉筛。 
{
	flag[0] = true, flag[1] = true; //特判。 
	for (long long i = 2; i <= n; i++)  //枚举范围。 
	{
		if (flag[i] == false)  //i 是质数。 
		{
			cur++;
			p[cur] = i;  //存入质数数组。 
		}
		//扫一遍 p 数组。此处 i 的作用为:倍数。
		for (int j = 1; j <= cur; j++)
		{
			//很好理解。超出范围,用不着枚举。 
			if (i * p[j] > n) break; 
			//若没有跳出,记录合数(筛掉)。
			flag[i * p[j]] = true;  
			//较难理解。简单地说,p[j] 的"过关门槛"比 i低,所以在这之前,已经筛过了。  
			if (i % p[j] == 0) break;  
		}
	}
}
int fac[1005]; //因数个数。 
void calc(int n) //作用为:分解 n的质因数。 
{
	for (int i = 1; i <= cur && n != 1; i++)
		while (n % p[i] == 0)
		{
			fac[i]++;
			n /= p[i];
		}
}
int main()
{
	int n;
	scanf("%d", &n);
	ES(n);
	for (int i = 1; i <= n; i++) //枚举n中的每一个数。 
	{
		int t = i;
		calc(t); //分解 t。 
	}
	long long mul = 1;
	//别忘开 long long,为什么开不解释。 
	for (int i = 1; i <= cur; i++) mul = (mul * (fac[i] + 1)) % MOD;   //因数个数定理。 
	printf("%lld\n", mul); //AT题祖传换行。
 	return 0;
}

超时是不可能的,跑得飞快!

不信戳这

首发:2022-01-27 19:50:29

标签:AT2286,int,题解,质数,flag,1005,true
From: https://www.cnblogs.com/liangbowen/p/16622743.html

相关文章

  • [HNOI2004] L 语言 题解(AC 自动机上 dp)
    前言:原版数据超弱,爆搜就能过(即洛谷里面80分的数据),在此不多说,这里讲的是正解。(如果不是正解我还敢写题解吗)唔······话说洛谷里的题解用的都有状压,蒟蒻表示这题不......
  • 【TPC附加赛YSTG】星坠比赛题解
    零、写在前面比赛地址本人比较菜,在这场接近提高组的模拟赛中获得了\(30+100+30+50=210\)的烂分事实上只要把暴力打足成绩一般就不会差但后来本人在Z......
  • LeetCode 重排链表算法题解 All In One
    LeetCode重排链表算法题解AllInOnejs/ts实现重排链表重排链表原理图解//快慢指针重排链表https://leetcode.com/problems/reorder-list/https://le......
  • ARC103E题解
    思路很奇怪(?)考虑是否合法的条件。注意到这个显然要求对称(即存在\(i\)必须存在\(n-i\)),如果不满足一定无解。然后比较显然的是\(1\)不存在和存在\(n\)都无解。然后......
  • 「AGC036F」Square Constraints 题解
    「AGC036F」SquareConstraints题解题目大意给定一个整数$n$,求有多少种$0\-\2n!-!1$的排列$P$,使得对于每个$i$,都有$n^2\lei^2+P_i^2\le4n^2$。......
  • 「POJ1475」Pushing Boxes 题解
    「POJ1475」PushingBoxes题解题目大意一张N行M列的地图,字符“.”表示空地,字符“#”表示墙,字符“S”表示人的起始位置,字符“B”表示箱子的起始位置,字符“T”表示箱子的......
  • 「COCI2014-2015#2」Norma 题解
    「COCI2014-2015#2」Norma题解题目大意给定一个\(n\)个数的序列\(a\),求\[\underset{i=1}{\overset{n}{\sum}}\underset{j=i}{\overset{n}{\sum}}(j-i+1)\min(a_i,a_......
  • 题解:【TJOI2009】宝藏
    【TJOI2009】宝藏题目链接看到走地图问题,自然联想到广搜,这个题前两篇题解讲的很清楚了,要带着机关状态走。最多只有十个机关,考虑状压。但是大佬们的装压我都看不懂捏,特意......
  • 题解:【SWTR-8】15B03
    题解:【SWTR-8】15B03题目链接前言本篇题解大量配图!作为一道非常好的有思维深度的题,必须写篇题解记录一下。谨以此篇献给我的第一道构造题。第一问(80pts)求需要撤去......
  • 题解:「GLR-R3」雨水
    题解:「GLR-R3」雨水题目链接前言先吐槽一下,这个英文是真的坑。constintMAXN=712;//Setarightvalueaccordingtoyoursolution.为啥不能直接把数组下标设为......