Gaoj.cpp 类实现部分

切换背景色
主题: 字体: 切换行号 全选代码块(Ctrl+C复制) xpycc4个月前贴出, C++ 语言
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 }
返回正常查看模式 返回代码发芽网首页