比这篇新的文章: Gaoj.h 类接口
比这篇旧的文章: checker.bitset.cpp

main.cpp

语言: C++, 标签: 无  2008/08/22发布 3个月前更新
作者: xpycc, 点击214次, 评论(0), 收藏者(0)

开关行号, 全选(Ctrl+C复制) | 一键复制:HTML, BBCode(Discuz!) , 源代码 | 查看:裸代码, 全屏
背景
主题: 字体:
C++语言: main.cpp
01 #include "Gaoj.h"
02 #include "prime.h"
03 //高精类缺省构造函数把对象初始为0,所以total为0
04 /*
05 *res是存i^(2的乘方数)的结果
06 *ans是高精度数的数组存储i^m的结果
07 *total存储最终的结果
08 */
09 int w,wei;
10
11 int main(){
12     mynumtotal,res,ans[10000];
13     int m,n,d,p;
14     cin>>m>>n>>w;
15     if(w%4==0)wei=w/4;
16     else wei=w/4+1;
17     for(inti=2;i<=n;++i){           //据说++i比i++快
18         if(prime[i]!=0){            //判断素数
19             res=i;                  //res初始为i^1,不知道什么方法能快一些
20             ans[i]=1;               //ans[i]初始为1
21             p=m;                    //每次循环开始前复位
22             while(p>0){
23                 while(p%2==0){
24                     res*=res;       //如果该2进制位为0则res=res^2,而不必把res乘到结果里
25                     p/=2;
26                 }
27                 ans[i]*=res;        //将res乘到ans[i]里
28                 res*=res;           //res=res^2
29                 p/=2;
30             }
31         }else{                                              
32             d=2;
33             while(i%d!=0) d=prime[d];  //找i的最小素因数
34             ans[i]=ans[d]*ans[i/d];       //根据 若a*b=c  则  c^m=a^m *b^m
35         }
36         total+=ans[i];              //累加结果
37     }
38     ++total;                       //total加一
39     cout<<total<<endl;
40     system("PAUSE");
41     return 0;
42 }
打分:

所有评论,共0条:( 我也来说两句)


发表评论

注册登录后再发表评论