kuangbin带你飞专题十四-C

题意:

给定一个面积为a的矩形,求有多少种整数的边的组合可以组成面积为a的矩形,且矩形的最短边长度大于等于b。注意,(x,y)和(y,x)属于同一种组合。(实际上就是求a的因子个数)

思路:

对于一个数求解他的因子个数的话,我们可以使用唯一分解定理.

唯一分解定理:

任何一个大于1的数都可以分解为有限个质数乘积的形式,即:N=(p^a1)(p^a2)....(p^ak),   

而此定理又有一个推论:N的因子个数等于(a1+1)*(a2+1)*(a3+1)....*(ak+1).我们通过这两个公式即可求解.

首先对素数打表,方便筛因子,当我们得到因子个数后,要首先除2,因为(x,y)和(y,x)属于同一种组合

紧接着我们再遍历剔除小于b的个数即可.  (注意:当筛选因子到最后时,要注意判断此时N是否大于1,如果大于1说明没被筛选完,还存在一个极大的素数,此时要乘2)

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int SIZE = 1e7;
int prime[SIZE];        //第i个素数,从1开始!
bool is_prime[SIZE];    //true表示i是素数
int ola(ll n){int cnt=0;memset(is_prime,true,sizeof(is_prime));is_prime[1]=false;for(ll i=2;i<=n;i++){if(is_prime[i]) prime[++cnt]=i;for(int j=1;j<=cnt&&i*prime[j]<=n;j++){is_prime[i*prime[j]]=false;if(i%prime[j]==0) break;}}return cnt;}
int main(){int t;scanf("%d",&t);ll cnt=ola(1000000);for(int k=1;k<=t;k++){ll ans=1,num=0;ll a,b;scanf("%lld %lld",&a,&b);if(b*b>a) {printf("Case %d: 0\n",k);continue;}ll case1=a;for(int i=1;i<=cnt&&prime[i]<=sqrt(case1);i++){ll cnt1=0;while(case1%prime[i]==0){cnt1++;case1/=prime[i];}ans*=(cnt1+1);}if(case1>1) ans*=2;ans/=2;ll sum=0;for(ll i=1;i<b;i++){if(a%i==0) sum++;}ans-=sum;printf("Case %d: %lld\n",k,ans);}return 0;}

Aladdin and the Flying Carpet (唯一分解定理)相关推荐

  1. Aladdin and the Flying Carpet (素数打表+正整数的唯一分解定理,找因数对)

    题目大意:给两个数a,b,求满足c*d==a且c>=b且d>=b的c,d二元组对数,(c,d)和(d,c)属于同一种情况 题目分析:根据唯一分解定理先将a唯一分解,则a的所有正约数的个数为 ...

  2. Aladdin and the Flying Carpet(唯一分解定理)

    传送门 It's said that Aladdin had to solve seven mysteries before getting the Magical Lamp which summon ...

  3. LightOJ - 1341 Aladdin and the Flying Carpet(数论)

    题意 有一块矩形(也可能是正方形)的飞毯. 给定飞毯的面积\(n\)和最小可能的边长\(a\),求可能有多少种不同边长的飞毯.(\(1<=a<=n<=1e12\)) 如面积\(n=6 ...

  4. C - Aladdin and the Flying Carpet(数论结论+思维)

    这道题应该是我的反思题. 千万自己要注意,如果一个数n没有被完全分解,答案千万要记得ans*=2因为还有一个比1e6更大的素数存在作为他的因子!! 我明明找到了a的约数个数/2-a在b一下的约数个数= ...

  5. 阿拉丁和飞毯(唯一分解定理&因数个数求和+素筛)

    我是传送门 It's said that Aladdin had to solve seven mysteries before getting the Magical Lamp which summ ...

  6. 欧几里得算法与唯一分解定理

    整理的算法模板合集: ACM模板 目录 最大公约数与最大公倍数 唯一分解定理 快速分解质因子 最大公约数与最大公倍数 最多O(logn)O(logn)O(logn) int gcd(int a, in ...

  7. FZU 1075 分解素因子【数论/唯一分解定理/分解素因子裸模板】

    [唯一分解定理]:https://www.cnblogs.com/mjtcn/p/6743624.html 假设x是一个正整数,它的值不超过65535(即1<x<=65535),请编写一个 ...

  8. 唯一分解定理(算术基本定理)详解——hdu5248和lightoj1341

    算数分解定理(唯一分解定理): 定义: 任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积 N=P1a1 P2a2P3a3-Pnan,这里P1<P2<P3-& ...

  9. Gym-101466K Random Numbers(线段树,数学,唯一分解定理)

    给一棵树,树上每个节点有一个权值,有两个操作,RAND操作查询u的子树乘积是多少以及有多少因数,SEED操作把节点u乘上v n,q <= 1e5.数值小于等于1e9,最大的质因数不超过13 组队 ...

  10. LightOJ - 1236 (唯一分解定理)

    题意:求有多少对数对(i,j)满足lcm(i,j) = n,1<=i<=j, 1<=n<=1e14. 分析:根据整数的唯一分解定理,n可以分解为(p1^e1)*(p2^e2)* ...

最新文章

  1. 史上最全的“大数据”学习资源
  2. “头移植模型”论文称换头术可行 业内疑两大问题未解
  3. C++拷贝构造函数的陷阱
  4. python关键字和保留字_或带有Python示例的关键字
  5. java地址自动拆分_java – Hibernate:每个月自动拆分表
  6. 根据经纬度计算范围_高中地理必修一二三思维导图+计算公式全汇总!能用3年...
  7. 第五章 使用 Bootstrap Typeahead 组件(百度下拉效果)
  8. (08)VHDL实现2路选择器
  9. 网管囧事系列二:又要杀毒,又要防***,网管怎样三头六臂?
  10. Brownie Slicing(二分枚举答案)
  11. Socket选项系列之TCP_NODELAY
  12. 解决升级PHP7后 微信公众号收不到消息
  13. 【转载】 CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)概念区分理解
  14. 考研 数学一 公式笔记
  15. 前端实现文件下载的功能
  16. 小白用Math对象随机生成一个名字
  17. 架设国外服务器怎么维护,架设海外服务器流程分享
  18. Pycharm创建项目“New environment using“与“Existing interpreter“的区别
  19. 改变ros bag 中消息的frame_id 和话题名
  20. 在 Jupyter Notebook 中使用R语言

热门文章

  1. Assembler - 数据段与代码段
  2. [RK3288] 相机照片进行翻转
  3. 电脑上安装的matlab软件打不开怎么办,电脑软件打不开没反应怎么办?
  4. Excel两行交换及两列交换,快速互换相邻表格数据的方法
  5. java 内存分析 工具_Java程序内存分析:使用mat工具分析内存占用 - 王爵的技术博客...
  6. efl是什么意思_efl是什么意思
  7. Java、某天是星期几
  8. 如何从CentOS官网下载我们想要的版本镜像
  9. ps第二次安装出错解决办法
  10. PAT甲级刷题计划-高精度