hdoj1215七夕节

 1  /* 七夕节
 2  如果N=p_1^n_1*p_2^n2*......*p_m^n_m
 3  则结果为(p_1^0+p_1^1+...+p_1^n_1)*(p_2^0+p_2^1+...+p_2^n_2)*...*(p_m^0+p_m^1+...+p_m^n_m)-N
 4  */
 5  #include < iostream >
 6  #include < string .h >
 7  #include < stdio.h >
 8  using   namespace  std;
 9  int  prime[ 500000 ], cnt, n, ans;
10  bool  primtmp[ 500002 ];
11  int  main()
12  {
13      cnt  =   0 ;
14      memset(primtmp,  - 1 sizeof (primtmp));
15       for  ( int  i  =   2 ; i  <=   500000 ++ i) {
16       if  (primtmp[i]) {
17          prime[cnt ++ =  i;
18           int  p  =   2   *  i;
19           while  (p  <=   500000 ) {
20          primtmp[p]  =   0 ;
21          p  +=  i;
22          }
23      }
24      }
25       int  T;
26      scanf( " %d " & T);
27       while  (T -- ) {
28      scanf( " %d " & n);
29       int  N  =  n, pos  =   0 ;
30      ans  =   1 ;
31       while  (n  >   1 ) {
32           int  ps  =   1 ;
33           while  (n  %  prime[pos]  ==   0 ) {
34          n  /=  prime[pos];
35          ps  *=  prime[pos];
36          ps ++ ;
37          }
38          ans  *=  ps;
39          pos ++ ;
40      }
41      printf( " %d\n " , ans  -  N);
42      }
43  }


转载于:https://www.cnblogs.com/Open_Source/archive/2010/05/10/1904951.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值