LightOJ - 1341 Aladdin and the Flying Carpet 唯一分解定理LightOJ 1220Mysterious Bacteria
题意:
ttt 组数据,第一个给定飞毯的面积为 sss,第二个是毯子的最短的边的长度大于等于这个数,毯子是矩形但不是正方形。
思路:
求出 sss 的所有因子,因为不可能是矩形,所以可以除以 222,最后暴力求出最短边长以内的因子,相减得出答案。
想要求出s以内的因子数量,就用到了唯一分解定理,先求素数想要求出s以内的因子数量,就用到了唯一分解定理,先求素数想要求出s以内的因子数量,就用到了唯一分解定理,先求素数
唯一分解定理:
任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积N=P1a1 P2a2 P3a3 … Pnan,这里P1<P2<P3…<Pn均为质数,其中指数ai是正整数。这样的分解称为 N 的标准分解式
(1)一个大于1的正整数N,如果它的标准分解式为:N=P1a1 P2a2 P3a3 … Pnan ,那么它的正因数个数为 sum=(1+a1)(1+a2)(1+a3)…(1+an)。
(2) 它的全体正因数之和为 (1+p11+p12+…+p1a1)(1+p21+p22+…+p2a2)…(1pn1+pn2+…+pnan)。
LightOJ1220:LightOJ 1220:LightOJ1220: x=bp,求出最大的 p 可以是几?(LightOJ 1220 Mysterious Bacteria)
即求出 x的标准分解式中的所有a的最大公约数。
//LightOJ - 1341
#include<stdio.h>
#include<math.h>
#include<vector>
using namespace std;
int main()
{
int t,z=1;
bool book[1000910]= {0};
long long s,l;
vector<int>v;
for(int i=2; i<=1000010; i++)
if(!book[i])
for(int j=i*2; j<=1000010; j=j+i)
book[j]=1;
for(int i=2; i<=1000008; i++)
if(!book[i])
v.push_back(i);
scanf("%d",&t);
while(t--)
{
scanf("%lld%lld",&s,&l);
if(l>=sqrt(s))
{
printf("Case %d: 0\n",z++);
continue;
}
long long sum=0;
for(long long i=1; i<l; i++)
if(s%i==0)
sum++;
long long i=0,ans=1;
while(i<v.size()&&v[i]<s)//素数小于 s
{
int tt=0;
while(s%v[i]==0)
{
tt++;
s=s/v[i];
}
ans=ans*(1+tt);//(1+a1)*(1+a2)*(1+a3)*.....*(1+an) //因子的数量
i++;
}
if(s>1)//若s>1,则为素数
ans=ans*2;
ans=ans/2;//几对素数
printf("Case %d: %lld\n",z++,ans-sum);
}
return 0;
}
//LightOJ 1220
#include<string.h>
#include<vector>
#include<stdio.h>
using namespace std;
int gcd(int a,int b)//求最大公约数
{
return a%b==0?b:gcd(b,a%b);//辗转相除法
}
int main()
{
vector<int>v;
bool book[1010000];
memset(book,0,sizeof(book));
book[1]=1;
for(int i=2; i<=1000100; i++)//素数筛
if(!book[i])
{
v.push_back(i);//储存素数
for(int j=i*2; j<=1000100; j=j+i)
book[j]=1;
}
int t,z=1,flag=0;
long long n;
scanf("%d",&t);
while(t--)
{
flag=0;
scanf("%lld",&n);
if(n<0)
{
n=n*-1;
flag=1;
}
int ans=0;
for(int i=0; i<v.size()&&v[i]*v[i]<=n; i++)
{
if(n%v[i]==0)
{
int tt=0;
while(n%v[i]==0)
{
n=n/v[i];
tt++;
}
if(ans==0)//第一次求最大公约数
ans=tt;
else
ans=gcd(ans,tt);// x=b^p p=gcd(a1,a2,a3...,an)
}
}
if(n > 1)//存在n>1时 指数的最大公约数为1 n此时为素数
ans = gcd(ans, 1);
if(flag == 1)
{
while(ans % 2 == 0)
ans >>= 1;
}
printf("Case %d: %d\n",z++,ans);
}
return 0;
}
LightOJ - 1341 Aladdin and the Flying Carpet 唯一分解定理LightOJ 1220Mysterious Bacteria的更多相关文章
- LightOJ 1341 - Aladdin and the Flying Carpet (唯一分解定理 + 素数筛选)
http://lightoj.com/volume_showproblem.php?problem=1341 Aladdin and the Flying Carpet Time Limit:3000 ...
- 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(唯一分解定理)
http://lightoj.com/volume_showproblem.php?problem=1341 题意:给你矩形的面积(矩形的边长都是正整数),让你求最小的边大于等于b的矩形的个数. 思路 ...
- 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为素数); ...
随机推荐
- PyQt5之QtMultimedia模块音乐播放没声音已解决
昨天用PyQt5的QtMultimedia模块播放音乐时,单独使用可播放,放代码里结合使用死的播放不了.以下是测试demo可播放代码: # -*- coding: utf-8 -*- # Nola f ...
- Yoshino: 一个基于React的可定制化的PC组件库
Github: https://github.com/Yoshino-UI... Docs: https://yoshino-ui.github.io/#/ Cli-Tool: https://git ...
- 神奇的 SQL 之 ICP → 索引条件下推
开心一刻 楼主:来,我们先排练一遍 小伙伴们:好 嘿.哈.嚯 楼主:非常好,就是这个节奏,我们开始吧 楼主:啊.啊.啊,疼 ! 你们是不是故意的 ? 回表与覆盖索引 正式讲 ICP 之前了,我们先将相 ...
- 第一个Hystrix程序 Hystrix 一
1.导入jar包 <dependencies> <dependency> <groupId>com.netflix.hystrix</groupId> ...
- python学习基础知识
学习python前最好知道的知识点: python之父:Guido van Rossum python是一种面向对象语言 目前python最新的版本是3.8,python2已经逐渐淘汰 python的 ...
- Redis02——Redis内存数据如何保存到磁盘
在前一篇文章中,已经介绍了Redis的基础数据结构,这篇文章将继续介绍Redis的持久化原理. 简介 众所周知Redis的所有数据都存在于内存之中,这就会存在因内存问题而导致的数据丢失,为了避免这一问 ...
- C语言程序设计(十二) 结构体和共用体
第十二章 结构体和共用体 当需要表示复杂对象时,仅使用几个基本数据类型显然是不够的 根本的解决方法是允许用户自定义数据类型 构造数据类型(复合数据类型)允许用户根据实际需要利用已有的基本数据类型来构造 ...
- 学习 CSS 之用 CSS 3D 实现炫酷效果
一.前言 把大象关进冰箱需要几步?三步,把冰箱门打开,把大象关进去,把冰箱门关上. 用 CSS 实现 3D 效果需几步?三步,设置透视效果 perspective,改变元素载体为 preserve-3 ...
- Billboard HDU - 2795(树状数组,单点修改,区间查询)
题目链接:https://vjudge.net/problem/HDU-2795 思路:h = 1e9行不通,因为广告是1*w的,所以n个广告最多只需要 h = n的高度,那么h=2e5就可以接受了. ...
- consoleInfo 输出 数组套对象 不显示...的方法 序列化 再反序列化
consoleInfo (...args) { // console.info('this', this) const name = this.$options.name let outName = ...