题意:

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的更多相关文章

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

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

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

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

  3. LightOJ 1341 Aladdin and the Flying Carpet(唯一分解定理)

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

  4. LightOJ 1341 Aladdin and the Flying Carpet 数学

    题意:给个矩形的面积a,和矩形的最小边长b,问有多少种矩形的方案(不能是正方形) 分析:a可以写成x,y,因为不能是正方形,所以设x<y,那么x<sqrt(a),y>sqrt(a) ...

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

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

  6. LightOJ 1341 - Aladdin and the Flying Carpet 基本因子分解

    http://www.lightoj.com/volume_showproblem.php?problem=1341 题意:给你长方形的面积a,边最小为b,问有几种情况. 思路:对a进行素因子分解,再 ...

  7. LightOJ 1341 - Aladdin and the Flying Carpet

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1341 题意:给你地毯面积和最小可能边的长度,让你求有几种组合的可能. 题解:这题就厉害 ...

  8. LightOJ 1341 Aladdin and the Flying Carpet【整数分解】

    题目链接: http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1341 题意: 给定一个数,将其拆分成两个数的乘 ...

  9. LightOJ 1341 Aladdin and the Flying Carpet 算数基本定理

    题目大意:给出面积n,和最短边m,求能形成的矩形的个数(不能为正方形). 题目思路:根据算数基本定理有: 1.每个数n都能被分解为:n=p1^a1*p2^a2*^p3^a3……pn^an(p为素数); ...

随机推荐

  1. Internet上的音频/视频概述

    Internet上的音频/视频概述 计算机网络最初是为传送数据信息设计的.因特网 IP 层提供的"尽最大努力交付"服务,以及每一个分组独立交付的策略,对传送数据信息也是很合适的. ...

  2. C++ 迷宫寻路问题

    迷宫寻路应该是栈结构的一个非常经典的应用了, 最近看数据结构算法应用时看到了这个问题, 想起来在校求学时参加算法竞赛有遇到过相关问题, 感觉十分亲切, 在此求解并分享过程, 如有疏漏, 欢迎指正 问题 ...

  3. Description Resource Path Location Type cvc-complex-type.2.4.c: The matching 解决问题

    2017-03-02 10:08:03,112 [localhost-startStop-1] ERROR org.springframework.web.servlet.DispatcherServ ...

  4. boostrap3 bootstrap-datetimepicker.min.js设置中文语言

    问题 bootstrap3中使用bootstrap-datetimepicker遇到设置中文语言的问题 解决办法 bootstrap-datetimepicker在使用的时候要先引入momentjs中 ...

  5. 前端每日实战:151# 视频演示如何用纯 CSS 创作超能陆战队的大白

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/ReGRaO 可交互视频 此视频是可 ...

  6. JavaScript的类数组

    类数组对象啊,被人问到它跟真正的数组对象有什么差别啊?说不上来就老埋汰了,只知道函数的arguments对象是个类数组对象,也有length属性,其他呢?干货奉上: 首先先说说数组吧: 1,当有新的元 ...

  7. 使用AtomicStampedReference<T>的大坑

    //在初始化的时候会把引用和时间戳存到pair中 AtomicStampedReference<Integer> integerAtomicStampedReference = new A ...

  8. 【11】openlayers 地图交互

    地图交互interaction 关于map的方法: //添加地图交互 map.addInteraction(interaction) //删除地图交互 map.removeInteraction(in ...

  9. 原生Canvas循环滚动弹幕(现金红包活动带头像弹幕)

    效果 gif有些糊,可以 在线预览 实现关键点 requestAnimationFrame 循环帧: 绘制单条弹幕,画框子 -> 画头像 -> 写黑色的字 -> 写红色的字, mea ...

  10. onOK Modal.warning iview 要写一个函数 套上,不然会得不到异步调用,直接弹出的时候就执行了

    export const warning = (str, callback = _ => {}, outCallback = () => {}) => { Modal.warning ...