LightOJ 1341 - Aladdin and the Flying Carpet
题目链接:http://lightoj.com/volume_showproblem.php?problem=1341
题意:给你地毯面积和最小可能边的长度,让你求有几种组合的可能。
题解:这题就厉害了。第一次了解了算术基本定理。

这里运用的是应用1。你想,你把所有的正因数个数找到了,减半,不就是组合对数了么QWQ。最后再减去小于最小的边的可能性。Perfect。数学真奇妙。
素数的板子是最开始贴的自己的那个。QWQ
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
#define ll long long
const int N = 1e6 + ; bool prime[N];
int p[N],tot; void init(){
for(int i = ; i < N ; i++){
prime[i] = true;
}
for(int i = ; i < N; i++){
if(prime[i])
p[tot++] = i;
for(int j = ; j < tot && i * p[j] < N; j++){
prime[ i*p[j] ] = false;
if( i % p[j] == )
break;
}
}
} int main(){
init();
int T;
cin>>T;
int t = ,ans = ;
ll area , minline;
while(T--){
cin>>area>>minline;
ans = ;
if(minline >= sqrt(area)){
printf("Case %d: %d\n",t,);
t++;
continue;
}
else{
ll tmp = area; //筛ai
for(int i = ; i < tot && p[i] * p[i] <= area ; i++){
int cnt = ;
while( area % p[i] == ){
area /= p[i];
cnt++;
}
ans *= (cnt + ); //所有正因数的个数
} if( area != ){
ans <<= ; //减半
}
ans >>= ;
for(int i = ; i < minline; i++){
if( tmp % i == )
ans--; //晒出小于minline的因子
}
printf("Case %d: %d\n",t,ans);
t++;
} } return ;
}
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(唯一分解定理)
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/login_main.php?url=volume_showproblem.php?problem=1341 题意: 给定一个数,将其拆分成两个数的乘 ...
- [LightOJ 1341] Aladdin and the Flying Carpet (算数基本定理(唯一分解定理))
题目链接: https://vjudge.net/problem/LightOJ-1341 题目描述: 问有几种边长为整数的矩形面积等于a,且矩形的短边不小于b 算数基本定理的知识点:https:// ...
- 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 算数基本定理
题目大意:给出面积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 ...
随机推荐
- C++——类
1.类和结构体,只有的默认访问权限的区别 2.类内不能定义和类外类型名相同的类型名.为什么?typedef机制? typedef double money; class Account { priva ...
- 1. Python版本的选择与安装
Python综述 Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,它具有卓越的通 ...
- 当引入的类库存在一个类型时,提示“xxx”和“xxx”之间的不明确引用时,消除歧义的方法
//using _2_命名空间和程序集.WidgetA; //using _2_命名空间和程序集.WidgetB; using System; using System.Collections.Gen ...
- Editor REST Client
Editor REST Client 制作一个http请求 请求行 GET https://example.com/comments/1 HTTP/1.1 POST https://example.c ...
- php ZipArchive 压缩整个文件夹
// Get real path for our folder $rootPath = realpath('folder-to-zip'); // Initialize archive object ...
- python--常用模块:collections 、time、random
一.collections 模块 1:nametuple 生成可以用名字访问内容的元祖 from collections import namedtuple point=namedtuple('p ...
- box-shadow单侧投影,双侧投影,不规则图案投影
底部投影box-shadow: 0 5px 4px -4px black; 底部右侧投影 3px 3px 6px -3px black 两侧投影 box-shadow: 7px 0 7px -7px ...
- JQ基本
jQuery的入口函数: 特点:1. 等着DOM结构渲染完毕即可执行内部代码,不必等到所有外部资源加载完毕,jQuery帮我们完成了封装. 2. 相当于原生js中的DOMContentLoaded. ...
- Flask理论基础(一)视图函数和URL反转函数(url_for)
一.视图函数 1.1 基本用法试图函数是 app.route 或者 bp.route(蓝图)装饰器装饰的函数.该函数实现了对URL路径的转换,也就是路由功能,例如下面代码定义了默认url ‘/’ 和‘ ...
- 74HC595点亮8个LED灯
一.原理介绍 595有两个寄存器,都是8位的,如下所示: 595是串入并出带有锁存功能移位寄存器,它的使用方法简单: - - 在正常使用时 /SCLR接高电平,/G接低电平. - - 从SER每输 ...