URAL 1049 Brave balloonists【数论】
2010-10-09 19:51
543 查看
题目地址:
http://acm.timus.ru/problem.aspx?space=1&num=1049
题目大意:
给10个数,a[i]<=10000,求a[1]*a[2]*······*a[10]的因子个数。
解题思路:
直接乘肯定不行的,会达到10^40次方。每个a[i]计算因子个数,直接相乘的话会重复计算。每个合数都可以表示成若干素数的乘积, 若
知a=p1^b1 * p2^b2 * p3^b3 * ······ * pn^bn, 则a的因子个数sum=(1+b1)*(1+b2)*(1+b3)*······*(1+bn),其中pi为素数。
证明:pi为素数,任意的i,j有gcd(pi^bi, pj^bj)==1, pi^bi的因子个数为(1+bi), pj^bj的因子个数为(1+bj),且两个因子集合中的数相乘,不会出现重复。
代码:
http://acm.timus.ru/problem.aspx?space=1&num=1049
题目大意:
给10个数,a[i]<=10000,求a[1]*a[2]*······*a[10]的因子个数。
解题思路:
直接乘肯定不行的,会达到10^40次方。每个a[i]计算因子个数,直接相乘的话会重复计算。每个合数都可以表示成若干素数的乘积, 若
知a=p1^b1 * p2^b2 * p3^b3 * ······ * pn^bn, 则a的因子个数sum=(1+b1)*(1+b2)*(1+b3)*······*(1+bn),其中pi为素数。
证明:pi为素数,任意的i,j有gcd(pi^bi, pj^bj)==1, pi^bi的因子个数为(1+bi), pj^bj的因子个数为(1+bj),且两个因子集合中的数相乘,不会出现重复。
代码:
1: #include <cstdio>
2: #include <cmath>
3: #include <cstring>
4: #define maxn 10005
5: int p[maxn],vis[maxn];
6: void Prime(){
7: int i,j,k=0;
8: for(i=2;i<=10000;i++){
9: if(!vis[i])p[k++]=i;
10: for(j=0;j<k&&i*p[j]<=10000;j++){
11: vis[p[j]*i]=1;
12: if(!(i%p[j]))break;
13: }
14: }
15: }
16:
17: int main()
18: {
19: Prime();
20: int m,i,j,ans;
21: memset(vis,0,sizeof(vis));
22: for(i=1;i<=10;i++){
23: scanf("%d",&m);
24: j=0;
25: while(m>1){
26: if(m%p[j]==0){
27: m/=p[j];
28: vis[p[j]]++;
29: }
30: else j++;
31: }
32: }
33: ans=1;
34: for(i=0;i<maxn;i++)
35: if(vis[i])
36: ans*=(vis[i]+1);
37: printf("%d/n",ans%10);
38: return 0;
39: }
相关文章推荐
- Ural1049 基础数论
- ural 1049. Brave Balloonists(标准分解式,数论)
- ural 1049
- URAL——1204(数论之线性方程)
- URAL 2011. Long Statement (数论)
- URAL 1139. City Blocks (数论)
- URAL 1049
- Ural2102:Michael and Cryptography(数论&素数)
- URAL 2070 Interesting Numbers(数论)
- Ural 1049. Brave Balloonists 求因子的个数
- Ural 2003: Simple Magic(数论&思维)
- Interesting Numbers URAL - 2070 数论
- ural 2070 Interesting Numbers(数论基础)
- Ural1110(数论)
- [求解二次剩余 数论技巧 随机化] Ural 1132 Square Root
- 【数论】ural1091
- URAL 1355. Bald Spot Revisited(数论)
- ural 2003. Simple Magic 数论 因数分解
- ural 1356. Something Easier(数论,哥德巴赫猜想)
- URAL 1132 Square Root <二次剩余 + 数论>