LightOJ-1341 Aladdin and the Flying Carpet 分解质因数(注意对大素数的优化)
题目链接:https://cn.vjudge.net/problem/LightOJ-1341
题意
给出一个长方形的面积a
让你算整数边长的可能取值,并且两个边都大于给定数字b
思路
唯一分解定理:$ n=\prod p_i^{a_i} \(
首先考虑分解质因数的复杂度\) O(\sum a_i) $,不会算-_-
然后尝试用试除法做这个
简单算了下复杂度,大概一共4×10^9个循环
最后也就试一试,不出意料超时
然后试图用筛法降低复杂度,等到交了才发现常数降了、复杂度是没降-_-
最后的最后还是用了分解质因数,这里必须注意一个优化,能大幅降低时空复杂度
考虑到一个小于1012的数,最多有一个超过106的质因数(若存在两个,必然超过10^12限制)
所以分解质因数的时候,质数可以仅生成到10^6
那么分解结束时若n!=1,可以判断n必然是大质数(超过10^6)
代码
#include <cstdio>
#include <cstring>
const int maxn=1e6+200;
int primes[maxn+5], psize;
bool isprime[maxn+5];
void initPrime(void){
memset(isprime, true, sizeof(isprime));
for (int i=2; i<maxn; i++) if (isprime[i]){
for (int j=i; j<=maxn; j+=i)
isprime[j]=false;
primes[psize++]=i;
}
}
long long solve(long long n){
long long sum=1;
for (int i=0; primes[i]<=n && i<psize; i++) if (n%primes[i]==0){
long long asum=1;
while (n%primes[i]==0) n/=primes[i], asum++;
sum*=asum;
}return sum+((n>1)?sum:0);
}
int main(void){
initPrime();
int T;
long long n, m;
scanf("%d", &T);
for (int tcnt=1; tcnt<=T; tcnt++){
scanf("%lld%lld", &n, &m);
if (m*m>=n){
printf("Case %d: 0\n", tcnt);
continue;
}
long long ans=solve(n)/2;
for (int i=1; i<m; i++)
if (n%i==0) ans--;
printf("Case %d: %lld\n", tcnt, ans);
}
return 0;
}
| Time | Memory | Length | Lang | Submitted |
|---|---|---|---|---|
| 2300ms | 5972kB | 1059 | C++ | 2018-05-15 23:28:44 |
LightOJ-1341 Aladdin and the Flying Carpet 分解质因数(注意对大素数的优化)的更多相关文章
- LightOJ 1341 - Aladdin and the Flying Carpet (唯一分解定理 + 素数筛选)
http://lightoj.com/volume_showproblem.php?problem=1341 Aladdin and the Flying Carpet Time Limit:3000 ...
- LightOJ - 1341 Aladdin and the Flying Carpet 唯一分解定理LightOJ 1220Mysterious Bacteria
题意: ttt 组数据,第一个给定飞毯的面积为 sss,第二个是毯子的最短的边的长度大于等于这个数,毯子是矩形但不是正方形. 思路: 求出 sss 的所有因子,因为不可能是矩形,所以可以除以 222, ...
- LightOJ 1341 Aladdin and the Flying Carpet 数学
题意:给个矩形的面积a,和矩形的最小边长b,问有多少种矩形的方案(不能是正方形) 分析:a可以写成x,y,因为不能是正方形,所以设x<y,那么x<sqrt(a),y>sqrt(a) ...
- LightOJ 1341 Aladdin and the Flying Carpet【整数分解】
题目链接: http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1341 题意: 给定一个数,将其拆分成两个数的乘 ...
- LightOJ 1341 Aladdin and the Flying Carpet(唯一分解定理)
http://lightoj.com/volume_showproblem.php?problem=1341 题意:给你矩形的面积(矩形的边长都是正整数),让你求最小的边大于等于b的矩形的个数. 思路 ...
- LightOJ 1341 - Aladdin and the Flying Carpet 基本因子分解
http://www.lightoj.com/volume_showproblem.php?problem=1341 题意:给你长方形的面积a,边最小为b,问有几种情况. 思路:对a进行素因子分解,再 ...
- LightOJ 1341 - Aladdin and the Flying Carpet
题目链接:http://lightoj.com/volume_showproblem.php?problem=1341 题意:给你地毯面积和最小可能边的长度,让你求有几种组合的可能. 题解:这题就厉害 ...
- LightOJ 1341 Aladdin and the Flying Carpet 算数基本定理
题目大意:给出面积n,和最短边m,求能形成的矩形的个数(不能为正方形). 题目思路:根据算数基本定理有: 1.每个数n都能被分解为:n=p1^a1*p2^a2*^p3^a3……pn^an(p为素数); ...
- LightOJ 1341 Aladdin and the Flying Carpet(整数拆分定理)
分析:题目并不难理解,就是一些细节上的优化需要我们注意,我在没有优化前跑了2000多MS,优化了一些细节后就是400多MS了,之前还TLE了好几次. 方法:将整数拆分为质因子以后,表达为这样的形式,e ...
随机推荐
- FastJSON杂项
//通过TypeReference解决泛型的问题 List<Integer> rst = JSON.parseObject(v,new TypeReference<List<I ...
- App.config配置详解
经上一篇文章https://www.cnblogs.com/luna-hehe/p/9104701.html发现自己对配置文件很是不了解,同样还是查了半天终于发现另一片宝贵文档https://www. ...
- JavaScript学习——使用JS完成注册页面表单校验
1.步骤分析 第一步:确定事件(onsubmit)并为其绑定一个函数 第二步:书写这个函数(获取用户输入的数据<获取数据时需要在指定位置定义一个 id>) 第三步:对用户输入的数据进行判断 ...
- jQuery获取单选框(复选框)选中的状态
jQuery 获取单选框(复选框)选中的状态 <input type="checkbox" name="" id="choose"/& ...
- ActiveMQ学习笔记(6)----ActiveMQ整合Spring开发
1. 添加依赖 spring 提供了对JMS的支持,需要添加Spring支持jms的包和Spring的核心包,如下: <dependency> <groupId>org.apa ...
- java redistemplate
//添加一个 key ValueOperations<String, Object> value = redisTemplate.opsForValue(); value.set(&quo ...
- docker系列之一 image和container
docker images往往不知不觉就占满了硬盘空间,为了清理冗余的image,可采用以下方法: 1.进入root权限 sudo su 2.停止所有的container,这样才能够删除其中的imag ...
- 【图灵杯 E也即POJ 3368】简单的RMQ
Description 给定一个数组,其中的元素满足非递减顺序.任意给定一个区间[i,j],求其中某个元素重复出现的最大次数. Input 多组数据输入.每组数据的第一行包含两个整数n和q(1< ...
- ListCtrl 控件数据动态改动
參考文章:ListCtrl 控件数据动态改动 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDIzNjU1MA==/font/5a6L5L2T/f ...
- mysql-管理事务
一.介绍 mysql支持几种基本的数据库引擎,其中MYSQL的两种最基本的引擎MyISAM和InnoDB,其中只有InnoDB支持事务管理. 事务处理:可以用来维护数据库的完整性,他保证成批的MySQ ...