比这篇新的文章:
shulie.cpp
比这篇旧的文章: Gaoj.h 类接口
作者: xpycc, 点击219次, 评论(0), 收藏者(0)
打分:
所有评论,共0条:( 我也来说两句)
比这篇旧的文章: Gaoj.h 类接口
Gaoj.cpp 类实现部分
语言: C++, 标签: 无 2008/08/22发布 3个月前更新作者: xpycc, 点击219次, 评论(0), 收藏者(0)
C++语言: Gaoj.cpp 类实现部分
01 #include "Gaoj.h"
02
03 void mynum::operator+=(const mynum& rhs){
04 int i,jin=0;
05 for(i=1;i<=::wei;++i){
06 jin+=Arr[i]+rhs.Arr[i];
07 Arr[i]=jin%10000;
08 jin/=10000;
09 }
10 }
11
12 mynum operator*(const mynum& lhs,const mynum& rhs){
13 mynum res;
14 int i,j,jin;
15 for(i=1;i<=::wei;++i){
16 jin=0;
17 for(j=1;j<=::wei-i+1;++j){
18 jin+=lhs.Arr[i]*rhs.Arr[j]+res.Arr[i+j-1];
19 res.Arr[i+j-1]=jin%10000;
20 jin/=10000;
21 }
22 }
23 return res;
24 }
25
26 void mynum::operator++(){
27 int jin=0,i=2;
28 jin=++Arr[1]/10000; Arr[1]%=10000;
29 while(jin>0&&i<=::wei){
30 jin=++Arr[i]/10000; Arr[i]%=10000;
31 ++i;
32 }
33 }
34
35 ostream& operator<<(ostream& os,const mynum&rhs){
36 long a=rhs.Arr[::wei];
37 switch(::wei*4-::w){
38 case 0:
39 if(a<10) os<<"0";
40 if(a<100) os<<"0";
41 if(a<1000) os<<"0";
42 os<<a;
43 break;
44 case 1:
45 a%=1000;
46 if(a<10) os<<"0";
47 if(a<100) os<<"0";
48 os<<a;
49 break;
50 case 2:
51 a%=100;
52 if(a<10) os<<"0";
53 os<<a;
54 break;
55 case 3:
56 a%=10;
57 os<<a;
58 break;
59 }
60 for(int i=::wei-1;i>0;--i){
61 if(rhs.Arr[i]>=1000) os<<rhs.Arr[i];
62 else
63 if(rhs.Arr[i]>=100) os<<"0"<<rhs.Arr[i];
64 else
65 if(rhs.Arr[i]>=10) os<<"00"<<rhs.Arr[i];
66 else os<<"000"<<rhs.Arr[i];
67 }
68 return os;
69 }
02
03 void mynum::operator+=(const mynum& rhs){
04 int i,jin=0;
05 for(i=1;i<=::wei;++i){
06 jin+=Arr[i]+rhs.Arr[i];
07 Arr[i]=jin%10000;
08 jin/=10000;
09 }
10 }
11
12 mynum operator*(const mynum& lhs,const mynum& rhs){
13 mynum res;
14 int i,j,jin;
15 for(i=1;i<=::wei;++i){
16 jin=0;
17 for(j=1;j<=::wei-i+1;++j){
18 jin+=lhs.Arr[i]*rhs.Arr[j]+res.Arr[i+j-1];
19 res.Arr[i+j-1]=jin%10000;
20 jin/=10000;
21 }
22 }
23 return res;
24 }
25
26 void mynum::operator++(){
27 int jin=0,i=2;
28 jin=++Arr[1]/10000; Arr[1]%=10000;
29 while(jin>0&&i<=::wei){
30 jin=++Arr[i]/10000; Arr[i]%=10000;
31 ++i;
32 }
33 }
34
35 ostream& operator<<(ostream& os,const mynum&rhs){
36 long a=rhs.Arr[::wei];
37 switch(::wei*4-::w){
38 case 0:
39 if(a<10) os<<"0";
40 if(a<100) os<<"0";
41 if(a<1000) os<<"0";
42 os<<a;
43 break;
44 case 1:
45 a%=1000;
46 if(a<10) os<<"0";
47 if(a<100) os<<"0";
48 os<<a;
49 break;
50 case 2:
51 a%=100;
52 if(a<10) os<<"0";
53 os<<a;
54 break;
55 case 3:
56 a%=10;
57 os<<a;
58 break;
59 }
60 for(int i=::wei-1;i>0;--i){
61 if(rhs.Arr[i]>=1000) os<<rhs.Arr[i];
62 else
63 if(rhs.Arr[i]>=100) os<<"0"<<rhs.Arr[i];
64 else
65 if(rhs.Arr[i]>=10) os<<"00"<<rhs.Arr[i];
66 else os<<"000"<<rhs.Arr[i];
67 }
68 return os;
69 }
所有评论,共0条:( 我也来说两句)
代码