Aladdin and the Flying Carpet LightOJ - 1341(算数基本定理)

9人阅读 评论(0) 收藏 举报
分类:

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

算术基本定理又叫唯一分解定理。
算术基本定理内容:任何一个大于1的自然数 ,都可以唯一分解成有限个质数的乘积 这里写图片描述 ,这里 这里写图片描述均为质数,其中指数 ai是正整数。


算术基本定理的几个应用:
下面的p1,p2…pn都是素数。
这里写图片描述

同时全体正因数的和也可以写作:
这里写图片描述


本题就是第一个应用。
有几个注意的地方:获得质数的个数的时候,可以先不筛选素数,但是本题时间卡的紧,必须要先筛素数。还有注意当b*b>=a的时候就特判。


最后把总的个数除2然后减去因数小于要求的最小因数的情况

code:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;
const int MAXN = 1e6+10;
int t;
int primes[MAXN];
bool isprime[MAXN];
void getPrime(){
    memset(isprime,true,sizeof(isprime));
    isprime[0] = isprime[1] = false;
    t = 0;
    for(int i = 2; i < MAXN; i++){
        if(isprime[i]){
            primes[t++] = i;
            for(int j = i + i; j < MAXN; j += i){
                isprime[j] = false;
            }
        }
    }
    return;
}
int getfac(ll x){
    int ans = 1;
    for(int i = 0; i < t && primes[i] * primes[i] <= x; i++){
        if(x == 1) break;
        int tmp = 0;
        while(x % primes[i] == 0){
            tmp++;
            x /= primes[i];
        }
        ans *= (tmp + 1);
    }
    if(x != 1) ans *= 2;//ans = ans * (1 + 1);
    return ans;
}
int main(){
    getPrime();
    int t;
    int cas = 0;
    scanf("%d",&t);
    while(t--){
        ll a,b;
        scanf("%lld%lld",&a,&b);
        if(b * b >= a){//因为题目要求不是正方形,并且另一条边一定大于b
            printf("Case %d: 0\n",++cas);
            continue;
        }
        int ans = getfac(a);
        ans /= 2;//因子对,所以除2
        for(int i = 1; i < b; i++){
            if(a % i == 0) ans--;//将小于要求的最小因数的情况去掉
        }
        printf("Case %d: %d\n",++cas,ans);
    }
    return 0;
}


查看评论

TensorFlow入门基本教程

随着人工智能的复兴,特别是阿法狗在围棋界轻松碾压所有人类棋手时,我们在惊奇它的神奇,它的高智慧,更好奇它的来源,以及它的实现原理,以及它的实际运行过程,那么你需要学习这个课程。这样的事件标志着一个新时代--人工智能时代的到来,在这样背景之下,人人都应该了解一些人工智能的基本知识,以及它的实现方式,以便把它应用到自己的工作领域里,让自己的工作更加出色,更加适应时代的发展。
  • 2017年03月08日 10:14

LightOJ 1341 - Aladdin and the Flying Carpet(算术基本定理 唯一分解定理)

题目链接:http://lightoj.com/volume_showproblem.php?problem=1341 It's said that Aladdin had to...
  • u012860063
  • u012860063
  • 2015-03-31 19:48:45
  • 1974

LightOJ 1341 Aladdin and the Flying Carpet(算术基本定理)

算术基本定理又叫唯一分解定理。 算术基本定理内容:任何一个大于1的自然数 ,都可以唯一分解成有限个质数的乘积 ,这里 均为质数,其中指数 ai是正整数。 算术基本定理的几个应用: 下面...
  • Codeblocksm
  • Codeblocksm
  • 2015-09-09 17:20:13
  • 464

lightoj 1341 Aladdin and the Flying Carpet (唯一分解定理)

lightoj 1341 Aladdin and the Flying Carpet (唯一分解定理)
  • Tc_To_Top
  • Tc_To_Top
  • 2015-07-27 19:23:50
  • 1355

LightOJ Aladdin and the Flying Carpet 1341【算数基本定理+几何】

1341 - Aladdin and the Flying Carpet PDF (English) Statistics Forum ...
  • ydd97
  • ydd97
  • 2015-08-21 12:05:54
  • 809

LightOJ 1341 - Aladdin and the Flying Carpet【合数分解】

题目链接:http://lightoj.com/volume_showproblem.php?problem=1341题意: 给出整数 a 和 b ,求区间[b, a] 内的 a 的约数对的个数,a...
  • u014427196
  • u014427196
  • 2015-06-17 17:15:23
  • 1295

LightOJ 1341 Aladdin and the Flying Carpet(算术基本定理)

LightOJ 1341 Aladdin and the Flying Carpet题意: 输入一个矩形面积,以及矩形边长的最小值,已知矩形不是正方形,求有多少种边长组合。 思路:转化一下就是求面...
  • qq_15714857
  • qq_15714857
  • 2015-09-19 00:02:46
  • 361

【算数基本定理(唯一分解定理)】Aladdin and the Flying Carpet LightOJ - 1341

Think: 1知识点:算数基本定理(唯一分解定理) 算术基本定理的几个应用: 注:p1, p2, pi都是素数 同时全体正因数的和也可以写作: ——“算数基本定理”参考博客地址2...
  • BlessingXRY
  • BlessingXRY
  • 2017-10-11 12:04:23
  • 96

lightoj1341Aladdin and the Flying Carpet(分解质因数+dfs)

题目链接:(http://lightoj.com/volume_showproblem.php?problem=1341)题意大概就是给你一个长方形面积a,求满足长和宽都不少于b的情况数,长不等于宽,...
  • IDrandom
  • IDrandom
  • 2016-05-03 01:06:49
  • 453

Light OJ 1341 Aladdin and the Flying Carpet(唯一分解定理)

It's said that Aladdin had to solve seven mysteries before getting the Magical Lamp which summons a ...
  • u013582254
  • u013582254
  • 2015-02-16 18:02:28
  • 1627
    个人资料
    持之以恒
    等级:
    访问量: 3万+
    积分: 4166
    排名: 9211
    文章存档
    最新评论