24h購物| | PChome| 登入
2011-06-14 22:11:15| 人氣756| 回應0 | 上一篇 | 下一篇

d860. NOIP2001 2.最大公约数和最小公倍数问题

推薦 0 收藏 0 轉貼0 訂閱站台

內容 :

输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数条件:  1.P,A是正整数2.要求P,Qx0为最大公约数,y0为最小公倍数.试求:满足条件的所有可能的两个正整数的个数.

輸入說明 :

输入x0,y0。

輸出說明 :

输出满足条件的所有可能的两个正整数的个数。

範例輸入 :

3 60

範例輸出 :

4

提示 :

输入:x0=3   yo=60输出:4说明(不用输出)此时的  P  Q  分别为:     3   6015      1212      1560       3所以:满足条件的所有可能的两个正整数的个数共4.

出處 :

NOIP2001普及组第二题 (管理:liouzhou_101)



作法: 窮舉
數據沒有搞很難,直接上

/**********************************************************************************/
/*  Problem: d860 "NOIP2001 2.最大公约数和最小公倍数问题" from NOIP2001普及组第二题*/
/*  Language: C                                                                   */
/*  Result: AC (2ms, 261KB) on ZeroJudge                                          */
/*  Author: morris1028 at 2011-06-12 12:55:14                                     */
/**********************************************************************************/


#include<stdio.h>
#include<math.h>
int gcd(int x, int y) {
    int t;
    while(x%y) {
        t = x, x = y, y = t%y;
    }
    return y;
}
main() {
    int x, y;
    while(scanf("%d %d", &x, &y) == 2) {
        long long n = x * y;
        int a, p, q, Ans = 0;
        for(a = x; a <= y; a++) {
            if(n%a == 0) {
                p = a, q = n /a;
                if(gcd(p,q) == x)    Ans++;
            }
        }
        printf("%d\n", Ans);
    }
    return 0;
}

台長: Morris
人氣(756) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: 資訊競賽 |
此分類下一篇:d892. NOIP2010 1.机器翻译
此分類上一篇:d861. NOIP2001 3.求先序排列

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文