UVa10892

Posted Yan_Bin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVa10892相关的知识,希望对你有一定的参考价值。

10892 LCM Cardinality
A pair of numbers has a unique LCM but a single number can be the LCM of more than one possible
pairs. For example 12 is the LCM of (1, 12), (2, 12), (3,4) etc. For a given positive integer N, the
number of different integer pairs with LCM is equal to N can be called the LCM cardinality of that
number N. In this problem your job is to find out the LCM cardinality of a number.
Input
The input file contains at most 101 lines of inputs. Each line contains an integer N (0 < N  2  109).
Input is terminated by a line containing a single zero. This line should not be processed.
Output
For each line of input except the last one produce one line of output. This line contains two integers
N and C. Here N is the input number and C is its cardinality. These two numbers are separated by a
single space.
Sample Input
2
12
24
101101291
0
Sample Output
2 2
12 8
24 11
101101291 5

题意:

       输入正整数n,统计有多少a<=b满足lcm(a,b)=n。输出n以及满足条件的整数对数。

分析:

       只需要枚举并存储数n的所有因子于数组arr,然后两两组合arr中的数,如果两数的最小公倍数是n则满足条件的整数对加1。

 1 #include <cstdio>
 2 #include <cmath>
 3 #define ll long long
 4 const int MAX_N = 1000;
 5 ll arr[MAX_N + 1]; // 存储所有的因子,从小到大
 6 ll gcd(ll a,ll b){return b == 0 ? a : gcd(b,a % b);}
 7 ll lcm(ll a,ll b){return a * b / gcd(a,b);}
 8 // 找出所有的因子
 9 int find_all(ll n){
10     int m = sqrt(n + 0.5);
11     int cnt = 0;
12     for(int i = 1 ; i <= m ; i++)if(n % i == 0)
13         arr[cnt++] = i,arr[cnt++] = n / i;
14     if(cnt >= 2 && arr[cnt - 1] == arr[cnt - 2]) cnt--;
15     return cnt; // 不同因子的个数
16 }
17 ll n;
18 int main(){
19     while(scanf("%lld",&n) && n){
20         int cnt = find_all(n),ans = 0;
21         for(int i = 0 ; i < cnt ; i++)
22             for(int j = i ; j < cnt ; j++)
23             if(lcm(arr[i],arr[j]) == n) ans++;
24         printf("%lld %d\\n",n,ans);
25     }
26     return 0;
27 }
View Code

 

以上是关于UVa10892的主要内容,如果未能解决你的问题,请参考以下文章

UVa10892

UVa 10892 - LCM Cardinality

题解 UVa10892

唯一分解定理

[数]被数学淹没不知所措

UVa 1442 - Cave