LightOJ 1341 Aladdin and the Flying Carpet(唯一分解定理)
http://lightoj.com/volume_showproblem.php?problem=1341
题意:
给你矩形的面积(矩形的边长都是正整数),让你求最小的边大于等于b的矩形的个数。
思路:
根据唯一分解定理,把X写成若干素数相乘的形式,则X的正因数的个数为:(1+a1)(1+a2)(1+a3)...(1+an)。(ai为指数)
因为这道题目是求矩形,所以知道一个正因数后,另一个正因数也就确定了,所以每组正因数重复计算了两遍,需要除以2。
最后减去小于b的因数。
- #include<iostream>
- #include<algorithm>
- #include<cstring>
- #include<cstdio>
- #include<vector>
- #include<queue>
- #include<cmath>
- #include<map>
- #include<stack>
- using namespace std;
- const int maxn=1e6+;
- int n;
- int cnt=;
- int primes[maxn];
- int vis[maxn];
- void get_primes()
- {
- int m=sqrt(maxn+0.5);
- for(int i=;i<=m;i++)
- {
- if(!vis[i])
- {
- for(int j=i*i;j<=maxn;j+=i)
- vis[j]=;
- }
- }
- for(int i=;i<=maxn;i++)
- if(!vis[i]) primes[cnt++]=i;
- }
- int main()
- {
- //freopen("D:\\input.txt","r",stdin);
- int T;
- int kase=;
- get_primes();
- scanf("%d",&T);
- while(T--)
- {
- long long a,b;
- scanf("%lld%lld",&a,&b);
- long long x=a;
- if(a<=b*b) {printf("Case %d: 0\n",++kase);continue;}
- long long ans=;
- for(int i=;i<cnt&&primes[i]*primes[i]<=a;i++)
- {
- if(a%primes[i]==)
- {
- long long num=;
- while(a%primes[i]==)
- {
- num++;
- a/=primes[i];
- }
- ans*=(+num);
- }
- }
- if(a>) ans*=;
- ans/=;
- for(long long i=;i<b;i++)
- if(x%i==) ans--;
- printf("Case %d: %lld\n",++kase,ans);
- }
- 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, ...
- LightOJ1341 Aladdin and the Flying Carpet —— 唯一分解定理
题目链接:https://vjudge.net/problem/LightOJ-1341 1341 - Aladdin and the Flying Carpet PDF (English) S ...
- 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 (算数基本定理(唯一分解定理))
题目链接: https://vjudge.net/problem/LightOJ-1341 题目描述: 问有几种边长为整数的矩形面积等于a,且矩形的短边不小于b 算数基本定理的知识点:https:// ...
- 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【整数分解】
题目链接: http://lightoj.com/login_main.php?url=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为素数); ...
随机推荐
- Mysql日常操作
创建用户并授权 grant all privileges on test.* to "test"@"localhost" identified by " ...
- Divisibility by Eight---cf550C(被8整除 暴力)
题目链接:http://codeforces.com/problemset/problem/550/C 题意是给你一个不操过100位的数,问删除m位之后,问剩下的数不改变顺序能被8整除的数存在不存在: ...
- virt-manager 操作 kvm虚拟机中鼠标不同步的问题
在/etc/libvirt/qemu下找到对应的xml配置文件 在<devices>标签下添加 <input type='tablet' bus='usb'/> 然后 vi ...
- solr 查询
1.常用查询参数说明 q - 查询字符串,必须的. fl - 指定返回那些字段内容,用逗号或空格分隔多个. start - 返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用. rows - ...
- nodejs获取参数的方法
1 获取get的querystring参数 GET /test?name=fred&tel=0926xxx572 let aa = req.param("name"); l ...
- How to store scaling parameters for later use
you can use sklearn's built-in tool: from sklearn.externals import joblib scaler_filename = "sc ...
- Kafka笔记整理(一)
Kafka简介 消息队列(Message Queue) 消息 Message 网络中的两台计算机或者两个通讯设备之间传递的数据.例如说:文本.音乐.视频等内容. 队列 Queue 一种特殊的线性表(数 ...
- 我的Linux病毒追踪记录
第一次自己一个人全权负责做游戏服务器,对于Linux安全并不太懂,所以就在昨天,服务器遭到了攻击,刚开始,只是发现服务器的带宽占满了,以为是带宽不够用,可是想想,弱联网游戏对带宽占用也不高啊而且带宽加 ...
- python全栈开发从入门到放弃之面向对象反射
1.classmethod.staticmethod方法 classmethod类方法默认参数cls,可以直接用类名调用,可以与类属性交互 #student文件内容 宝宝,男 博博,女 海娇,男 海燕 ...
- MySQL 温故知心(三)
MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制.比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level loc ...