Aladdin and the Flying Carpet (LightOJ - 1341)【简单数论】【算术基本定理】【分解质因数】
Aladdin and the Flying Carpet (LightOJ - 1341)【简单数论】【算术基本定理】【分解质因数】(未完成)
标签:入门讲座题解 数论
题目描述
It's said that Aladdin had to solve seven mysteries before getting the Magical Lamp which summons a powerful Genie. Here we are concerned about the first mystery.
Aladdin was about to enter to a magical cave, led by the evil sorcerer who disguised himself as Aladdin's uncle, found a strange magical flying carpet at the entrance. There were some strange creatures guarding the entrance of the cave. Aladdin could run, but he knew that there was a high chance of getting caught. So, he decided to use the magical flying carpet. The carpet was rectangular shaped, but not square shaped. Aladdin took the carpet and with the help of it he passed the entrance.
Now you are given the area of the carpet and the length of the minimum possible side of the carpet, your task is to find how many types of carpets are possible. For example, the area of the carpet 12, and the minimum possible side of the carpet is 2, then there can be two types of carpets and their sides are: {2, 6} and {3, 4}.
Input
Input starts with an integer T (≤ 4000), denoting the number of test cases.
Each case starts with a line containing two integers: a b (1 ≤ b ≤ a ≤ 1012) where a denotes the area of the carpet and b denotes the minimum possible side of the carpet.
Output
For each case, print the case number and the number of possible carpets.
Sample Input
2
10 2
12 2
Sample Output
Case 1: 1
Case 2: 2
题意
给定\(a, b\), \(a\)
解析
通过代码
/*
Problem
    LightOJ - 1341
Status
	Accepted
Time
	359ms
Memory
	6968kB
Length
	1607
Lang
	C++
Submitted
	2019-11-25 21:51:33
RemoteRunId
	1640797
*/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 1e6 + 50;
bool vis[MAXN];
int prime[MAXN], cnt = 0;
inline ll read()    //快读,加快程序输入速度.
{
    ll res = 0;
    char ch;
    ch = getchar();
    while(!isdigit(ch))
        ch = getchar();
    while(isdigit(ch)){
        res = (res << 3) + (res << 1) + ch - 48;
        ch = getchar();
    }
    return res;
}
void get_prime()     //欧拉筛,先找到sqrt(n)以内的质数,方便之后质因数分解.
{
    vis[1] =  1;
    for(int i = 2; i <= int(1e6 + 5); i ++){
        if(!vis[i])
            prime[++ cnt] = i;
        for(int j = 1; j <= cnt && i * prime[j] <= int(1e6 + 5); j ++){
            vis[i * prime[j]] = 1;
            if(i % prime[j] == 0)
                break;
        }
    }
    return ;
}
int main()
{
    get_prime();
    int times, _case = 0;
    scanf("%d", ×);
    while(times --){
        ll a, b, t;
        ll ans = 1;
        a = read(), b = read();
        t = a;
        if(b * b >= a){              //如果最小的因数都超过了sqrt(a),那么说明不存在符合条件的成对的因数了.
            printf("Case %d: 0\n", ++_case);
            continue;
        }
        for(int i = 1; i <= cnt && 1ll * prime[i] * prime[i] <= a; i ++){
            if(a % prime[i] == 0){
                int res = 0;
                while(a % prime[i] == 0){
                    res ++;
                    a /= prime[i];
                }
                ans *= 1ll * (res + 1);
            }
        }
        if(a > 1)
            ans <<= 1;
        ans >>= 1;    //问有几对,两个因数算作一对.(如果是完全平方数的sqrt(a)因子,则不能算作一对.)
        for(ll i = 1; i < b; i ++){
            if(t % i == 0)
                ans --;
        }
        printf("Case %d: %lld\n", ++ _case, ans);
    }
    return 0;
}
Aladdin and the Flying Carpet (LightOJ - 1341)【简单数论】【算术基本定理】【分解质因数】的更多相关文章
- Aladdin and the Flying Carpet   LightOJ 1341 唯一分解定理
		
题意:给出a,b,问有多少种长方形满足面积为a,最短边>=b? 首先简单讲一下唯一分解定理. 唯一分解定理:任何一个自然数N,都可以满足:,pi是质数. 且N的正因子个数为(1+a1)*(1+a ...
 - Aladdin and the Flying Carpet LightOJ - 1341 (素数打表 + 算术基本定理)
		
题意: 就是求a的因数中大于b的有几对 解析: 先把素数打表 运用算术基本定理 求出a的所有因数的个数 然后减去小于b的因数的个数 代码如下: #include <iostream> #i ...
 - 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 ...
 - Aladdin and the Flying Carpet
		
Aladdin and the Flying Carpet https://cn.vjudge.net/contest/288520#problem/C It's said that Aladdin ...
 - C - Aladdin and the Flying Carpet  有多少种长方形满足面积为a(<=10^12),且最短边>=b;长方形边长为整数,且一定不可以是正方形。
		
/** 题目:C - Aladdin and the Flying Carpet 链接:https://vjudge.net/contest/154246#problem/C 题意:有多少种长方形满足 ...
 - LightOJ 1341 - Aladdin and the Flying Carpet
		
题目链接:http://lightoj.com/volume_showproblem.php?problem=1341 题意:给你地毯面积和最小可能边的长度,让你求有几种组合的可能. 题解:这题就厉害 ...
 - LightOJ - 1341 Aladdin and the Flying Carpet 唯一分解定理LightOJ 1220Mysterious Bacteria
		
题意: ttt 组数据,第一个给定飞毯的面积为 sss,第二个是毯子的最短的边的长度大于等于这个数,毯子是矩形但不是正方形. 思路: 求出 sss 的所有因子,因为不可能是矩形,所以可以除以 222, ...
 - 1341 - Aladdin and the Flying Carpet ---light oj (唯一分解定理+素数筛选)
		
http://lightoj.com/volume_showproblem.php?problem=1341 题目大意: 给你矩形的面积(矩形的边长都是正整数),让你求最小的边大于等于b的矩形的个数. ...
 
随机推荐
- 大部分人都会忽略的Python易错点总结
			
python中复数实现(-2) 0.5和开根号sqrt(-2)的区别** (-2)**0.5和sqrt(-2)是不同的,前者是复数后者是会报错的. print((-2)**0.5) #输出:(8.65 ...
 - UML简单介绍—类图详解
			
类图详解 阅读本文前请先阅读:UML简单介绍—类图这么看就懂了 1.泛化关系 一个动物类: /** * 动物类 */ public class Animal { public String name; ...
 - Vue结合后台导入导出Excel问题详解后续
			
接前几天写的一篇博客 https://www.cnblogs.com/ttjm/p/11307462.html 在ie浏览器测试发现打不开,经调查问题如下 1 如果在本地开发调试,请求接口报错如下 ...
 - SQL Server启动/关闭xp_cmdshell
			
==>启用xp_cmdshell USE master RECONFIGURE WITH OVERRIDE RECONFIGURE WITH OVERRIDE RECONFIGURE WITH ...
 - 官方版vs2008至vs2013下载地址
			
Visual Studio 2005 Professional 官方90天试用版 英文版:http://download.microsoft.com/download/e/0/4/e04de840-8 ...
 - mybatis中查询结果为空时不同返回类型对应返回值
			
今天在别人的代码基础上实现新需求,看到对于mybatis查询结果的判断不是很正确,如果查询结果为空就会异常,不知道大家有没有这样的疑惑:mybatis中resultType有多种返回类型,对于每种不同 ...
 - ASCII码表收藏
			
ASCII码表 ASCII码值 ESC键 VK_ESCAPE (27)回车键: VK_RETURN (13)TAB键: VK_TAB (9)Caps Lock键: VK_CAPITAL (20)Shi ...
 - Bandizip解压压缩软件
			
上次重装系统以后,特别注意安装软件,在这里提一些比较好的 解压软件:Bandizip 这个是一个免费轻量级的软件,压缩解压速度快,没什么广告,推荐大家在官方下载 Bandizip下载网址 点击下载安装 ...
 - Maven項目打包報錯:Plugin execution not covered by lifecycle configuration
			
Maven項目打包報錯:Plugin execution not covered by lifecycle configuration 使用Eclipse导入一个新的maven项目时不时的会遇到这个错 ...
 - jQuery-实现简单的Ajax请求封装
			
封装的意义在于复用,在于减少重复的代码. 我在项目中做了简单的Ajax请求封装,实现方式如下: //封装Ajax请求 $.extend({ ajaxDirect:function(url,type,d ...