比这篇新的文章:
Gaoj.h 类接口
比这篇旧的文章: checker.bitset.cpp
作者: xpycc, 点击214次, 评论(0), 收藏者(0)
打分:
所有评论,共0条:( 我也来说两句)
比这篇旧的文章: checker.bitset.cpp
main.cpp
语言: C++, 标签: 无 2008/08/22发布 3个月前更新作者: xpycc, 点击214次, 评论(0), 收藏者(0)
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 }
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条:( 我也来说两句)
代码