LightOJ 1341 Aladdin and the Flying Carpet(唯一分解定理)
2024-08-26 20:30:23
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 ;
}
最新文章
- 在虚拟机中安装CentOS
- java 部分隐藏字段
- Node.js入门学习笔记(二)
- No Entity Framework provider found for the ADO.NET provider with invariant
- 使用 Daynamic 动态添加属性
- vim 查找时忽略大小写
- cocos2d-x之Vector与map
- Android中的sharedUserId属性详解
- css笔记18:盒子模型案例分析示范
- Android选项卡TabHost方式实现
- Merge Into For Update Example
- Json字符串与字典互转
- UVA 10668 - Expanding Rods(数学+二分)
- global中拦截404错误的实现方法
- java 参数传值
- linux 下启动程序的时候会显示坏的解释器,或者没有那个文件
- LeetCode算法题-Island Perimeter(Java实现)
- class文件魔数CAFEBABE的由来
- October 22nd, 2017 Week 43rd Sunday
- Codeforces 913C - Party Lemonade
热门文章
- 基于Django的乐观锁与悲观锁解决订单并发问题的一点浅见
- git mv与直接mv的区别
- rabbitMQ基本概念
- AngularJS filter:search 是如何匹配的 ng-repeat filter:search ,filter:{$:search},只取repeat的item的value 不含label
- C# 将 HTML 转换为图片或 PDF
- Bridge Serial-Ports over network
- spark[源码]-sparkContext详解[一]
- tomcat高并发配置调优
- [CLR via C#读后整理]-1.CLR的执行模型
- mouseover 有一个多次触发的问题