题意

有一块矩形(也可能是正方形)的飞毯。

给定飞毯的面积\(n\)和最小可能的边长\(a\),求可能有多少种不同边长的飞毯。(\(1<=a<=n<=1e12\))

如面积\(n=6\)时,\(\{2,3\}\)和\(\{3,2\}\)算一种。

题解

本来想\(sqrt(n)\)的复杂度直接枚举\(n\)的所有因数,发现\(TLE\)了。

正解是把\(n\)质因数分解成\(n=a_1^{b_1}a_2^{b_2}...a_n^{b_n}\),然后\(n\)的因子的个数就是\((1+b_1)*(1+b_2)...(1+b_n)\)。

我自做聪明的把上面得出的结果加上\(1\)(考虑到因子有\(1\)的情况),结果WA了一晚上。

得出\(n\)的因子个数之后,再暴力枚举小于\(b\)的数,如果是\(n\)的因数就减掉。

代码

#include <bits/stdc++.h>

#define FOPI freopen("in.txt", "r", stdin)
#define FOPO freopen("out.txt", "w", stdout)
#define FOR(i,x,y) for (int i = x; i <= y; i++)
#define ROF(i,x,y) for (int i = x; i >= y; i--) using namespace std;
typedef long long LL;
const int N = 1e6 + 10; int Prime[N+100]; void getPrime(int N)
{
memset(Prime, 0, sizeof(Prime));
FOR(i, 2, N)
{
if (!Prime[i]) Prime[++Prime[0]] = i;
for (int j = 1; j <= Prime[0] && Prime[j] <= N/i; j++)
{
Prime[Prime[j]*i] = 1;
if (i % Prime[j] == 0) break;
}
}
} int factor[N+100][2]; int facCnt;
LL Factor(LL x)
{
facCnt = 0;
LL tmp = x;
for (int i = 1; Prime[i] <= tmp/Prime[i]; i++)
{
factor[facCnt][1] = 0;
if (tmp % Prime[i] == 0)
{
factor[facCnt][0] = Prime[i];
while(tmp % Prime[i] == 0)
{
factor[facCnt][1]++;
tmp /= Prime[i];
}
facCnt++;
}
} if (tmp != 1)
{
factor[facCnt][0] = tmp;
factor[facCnt++][1] = 1;
} LL res = 1;
FOR(i, 0, facCnt-1)
res *= (1+factor[i][1]); return res;
} LL n, b;
int t; int main()
{
getPrime(N); scanf("%d", &t);
FOR(ca, 1, t)
{
scanf("%lld %lld", &n, &b);
if (n < b*b)
{
printf("Case %d: 0\n", ca);
continue;
} LL Sum1 = Factor(n) / 2;
FOR(i, 1, b-1)
if (n % i == 0) Sum1--;
printf("Case %d: %lld\n", ca, Sum1);
}
}

LightOJ - 1341 Aladdin and the Flying Carpet(数论)的更多相关文章

  1. LightOJ 1341 - Aladdin and the Flying Carpet (唯一分解定理 + 素数筛选)

    http://lightoj.com/volume_showproblem.php?problem=1341 Aladdin and the Flying Carpet Time Limit:3000 ...

  2. LightOJ - 1341 Aladdin and the Flying Carpet 唯一分解定理LightOJ 1220Mysterious Bacteria

    题意: ttt 组数据,第一个给定飞毯的面积为 sss,第二个是毯子的最短的边的长度大于等于这个数,毯子是矩形但不是正方形. 思路: 求出 sss 的所有因子,因为不可能是矩形,所以可以除以 222, ...

  3. LightOJ 1341 Aladdin and the Flying Carpet(唯一分解定理)

    http://lightoj.com/volume_showproblem.php?problem=1341 题意:给你矩形的面积(矩形的边长都是正整数),让你求最小的边大于等于b的矩形的个数. 思路 ...

  4. LightOJ 1341 - Aladdin and the Flying Carpet 基本因子分解

    http://www.lightoj.com/volume_showproblem.php?problem=1341 题意:给你长方形的面积a,边最小为b,问有几种情况. 思路:对a进行素因子分解,再 ...

  5. LightOJ 1341 - Aladdin and the Flying Carpet

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1341 题意:给你地毯面积和最小可能边的长度,让你求有几种组合的可能. 题解:这题就厉害 ...

  6. LightOJ 1341 Aladdin and the Flying Carpet【整数分解】

    题目链接: http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1341 题意: 给定一个数,将其拆分成两个数的乘 ...

  7. [LightOJ 1341] Aladdin and the Flying Carpet (算数基本定理(唯一分解定理))

    题目链接: https://vjudge.net/problem/LightOJ-1341 题目描述: 问有几种边长为整数的矩形面积等于a,且矩形的短边不小于b 算数基本定理的知识点:https:// ...

  8. LightOJ 1341 Aladdin and the Flying Carpet 数学

    题意:给个矩形的面积a,和矩形的最小边长b,问有多少种矩形的方案(不能是正方形) 分析:a可以写成x,y,因为不能是正方形,所以设x<y,那么x<sqrt(a),y>sqrt(a) ...

  9. LightOJ 1341 Aladdin and the Flying Carpet 算数基本定理

    题目大意:给出面积n,和最短边m,求能形成的矩形的个数(不能为正方形). 题目思路:根据算数基本定理有: 1.每个数n都能被分解为:n=p1^a1*p2^a2*^p3^a3……pn^an(p为素数); ...

随机推荐

  1. php函数超实用

    DateTime DateTime::addDateTime::diffDateTime::formatDateTime::modifyDateTime::sub... * DateInterval ...

  2. java与模式读后总结

    一 老规则边看边写书上的代码,磨磨蹭蹭三个多星期终于把一本1000+的java与模式看完了. 于是,在这里贴上自己对每个模式的思考和总结,其实这个东西在我边看边写的时候已经写了一大半,博文再写一次算是 ...

  3. 两道sql面试题

    两道sql面试题:    1. 数据库表A的数据如下:             year   quarter             2001      1             2001      ...

  4. Javascript学习笔记-一些关键点

    Javascript学习笔记-一些关键点 Table of Contents 1. 调试 2. == vs === 3. 两种函数声明 4. 技术感悟 1 调试 现在的主流浏览器都提供了开发者模式,可 ...

  5. 【前端】Chrome DevTools 笔记

    1. 查看网络耗时 timeline 生命周期按照以下类别显示花费的时间: Queuing Stalled 如果适用:DNS lookup.initial connection.SSL handsha ...

  6. linux 下 `dirname $0`(转)

    在命令行状态下单纯执行 $ cd `dirname $0` 是毫无意义的.因为他返回当前路径的".".这个命令写在脚本文件里才有作用,他返回这个脚本文件放置的目录,并可以根据这个目 ...

  7. sql server2016安装程序图

    今天终于有时间安装SQL Server2016正式版,下载那个安装包都用了一个星期 安装包可以从这里下载: http://www.itellyou.cn/ https://msdn.microsoft ...

  8. jQuery_2_常规选择器-进阶选择器

    进阶选择器: 1. 群组选择器     $("span,em,#box")   获取多个选择器的DOM对象 <div id="d1">div< ...

  9. 企业常用的站内收索、QQ群、在线客服

    <div class="toplinks">            <form target="_blank">             ...

  10. graylog日志收集过程举例

    graylog的日志收集功与logslash类似,也是需要input-filter-output这样一个过程. 下面举三种最常用的日志记录来说明一下.     1,TCP报文日志         设置 ...