题意:给出a,b,问有多少种长方形满足面积为a,最短边>=b?

首先简单讲一下唯一分解定理。

唯一分解定理:任何一个自然数N,都可以满足:,pi是质数。

且N的正因子个数为(1+a1)*(1+a2)*(1+a3)*.......*(1+an)。

看了网络上很多人写的题解,普遍的做法是先找出N的所有正因子n,(n/2)就是在不考虑最短边>=b时所有存在的长方形,现在考虑最短边>=b,只需要减去所有能整除a且小于b的因子即可。

具体写法:

1.先预处理素数

2.用唯一分解定理求出N的所有因子

3.减去使得最短边<b的因子对

AC code:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
bool u[];
ll su[];
ll a,b,tmp,num,sum;
void olas()
{
num=;
memset(u,true,sizeof(u));
for(ll i=; i<=; i++)
{
if(u[i]) su[num++]=i;
for(ll j=; j<num; j++)
{
if(i*su[j]>) break;
u[i*su[j]]=false;
if(i%su[j]==) break;
}
}
}
void cal()
{
sum=;
for(ll i=; i<num&&su[i]<=sqrt(tmp); i++)
{
ll cc=;
while(tmp%su[i]==)
{
cc++;
tmp/=su[i];
}
sum*=(+cc);
}
if(tmp>) sum*=;
}
int main()
{
//freopen("input.txt","r",stdin);
olas();
ll T,kase=;
scanf("%lld",&T);
while(T--)
{
scanf("%lld%lld",&a,&b);
if(a<b*b) printf("Case %lld: 0\n",kase++);
else
{
tmp=a;
cal();
sum/=;
for(ll i=; i<b; i++)
{
if(a%i==) sum--;
}
printf("Case %lld: %lld\n",kase++,sum);
}
}
return ;
}

存疑:

虽然说按照以上写法可以AC,考虑到有T可以取到4000,b可以取到1000000,假设有测试数据如下:

T = 4000

case 1:a=10^12 ,b=10^6

case 2:a=10^12 ,b=10^6-1

case 3:a=10^12 ,b=10^6-2

.......

case 4000:a=10^12,b=10^6-3999

这样一来由于每次都遍历了1->b,真实时间复杂度>O(4000*10^6)在3000ms内必然TLE。

但是本题不存在这样的测试数据。。。。。。。所以可以直接水过。。

Aladdin and the Flying Carpet LightOJ 1341 唯一分解定理的更多相关文章

  1. Aladdin and the Flying Carpet (LightOJ - 1341)【简单数论】【算术基本定理】【分解质因数】

    Aladdin and the Flying Carpet (LightOJ - 1341)[简单数论][算术基本定理][分解质因数](未完成) 标签:入门讲座题解 数论 题目描述 It's said ...

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

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

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

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

  4. Aladdin and the Flying Carpet LightOJ - 1341 (素数打表 + 算术基本定理)

    题意: 就是求a的因数中大于b的有几对 解析: 先把素数打表 运用算术基本定理 求出a的所有因数的个数 然后减去小于b的因数的个数 代码如下: #include <iostream> #i ...

  5. LightOJ 1341 唯一分解定理

    Aladdin and the Flying Carpet Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%lld &a ...

  6. LightOJ - 1341唯一分解定理

    唯一分解定理 先分解面积,然后除2,再减去面积%长度==0的情况,注意毯子不能是正方形 #include<map> #include<set> #include<cmat ...

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

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

  8. LightOJ1341 Aladdin and the Flying Carpet —— 唯一分解定理

    题目链接:https://vjudge.net/problem/LightOJ-1341 1341 - Aladdin and the Flying Carpet    PDF (English) S ...

  9. Aladdin and the Flying Carpet

    Aladdin and the Flying Carpet https://cn.vjudge.net/contest/288520#problem/C It's said that Aladdin ...

随机推荐

  1. C 储存类与运算符

    储存类 参考链接:https://www.runoob.com/cprogramming/c-storage-classes.html 存储类定义 C 程序中变量/函数的范围(可见性)和生命周期 au ...

  2. synchronized和volatile使用

    synchronized和volatile volatile :保证内存可见性,但是不保证原子性: synchronized:同步锁,既能保证内存可见性,又能保证原子性: synchronized实现 ...

  3. SQL的简单函数(极客时间)

    SQL的函数 函数就是将我们经常使用的代码封装起来, 需要的时候直接调用, 提高代码效率和可维护性. SQL函数一般是在数据上执行, 可以方便地转换和处理数据. 常用的SQL函数 SQL提供了一些常用 ...

  4. 数字,字符串,time模块,文本进度条

    数字和字符串 数字类型 整形 整数, 1/2/3/12/2019 整形用来描述什么, 身高/年龄/体重 age = 18 height = 180 浮点型 浮点数,小数 salary = 10 pri ...

  5. django使用xadmin

    一.安装xadmin 由于我用的是Django2.0以后的版本 所以无法直接通过pip install xadmin来安装 即使安装成功了 也会报乱七八糟的错误 https://github.com/ ...

  6. Appium+python自动化(二)- 环境搭建—下(超详解)

    简介 宏哥的人品还算说得过去,虽然很久没有搭建环境了,但是换了新电脑设备,一气呵成,将android的测试开发环境已经搭建准备完毕.上一篇android测试开发环境已经准备好, 那么接下来就是appi ...

  7. 处理海量数据的grep、cut、awk、sed 命令

    grep.cut.awk.sed 常常应用在查找日志.数据.输出结果等等,并对我们想要的数据进行提取. 通常grep,sed命令是对行进行提取,cut跟awk是对列进行提取 处理海量数据之grep命令 ...

  8. Codeforces Round #607 (Div. 2) 题解

    Suffix Three Azamon Web Services Cut and Paste Beingawesomeism Jeremy Bearimy Miss Punyverse Suffix ...

  9. 前端Vue项目——课程详情页面实现

    一.详情页面路由跳转 应用 Vue Router 编程式导航通过 this.$router.push() 来实现路由跳转. 1.绑定查看详情事件 修改 src/components/Course/Co ...

  10. [LeetCode] 913. Cat and Mouse 猫和老鼠

    A game on an undirected graph is played by two players, Mouse and Cat, who alternate turns. The grap ...