标签:ios this for memcpy als bsp set int --
1 const int MAXN = 35; 2 const int M = 1e9;//1e9为1节 3 struct highNum{ 4 ll num[MAXN]; 5 highNum(int length = 1){ 6 memset(num, 0, sizeof(num)); 7 num[0] = length; 8 } 9 highNum operator = (highNum b){ 10 memcpy(num, b.num, sizeof(b.num)); 11 return *this; 12 } 13 highNum operator = (int b){ 14 *this = highNum(); 15 num[num[0]] = b; 16 return *this; 17 } 18 bool operator < (const highNum& b) const{ 19 if(num[0] < b.num[0]) return true; 20 if(num[0] == b.num[0]){ 21 for(int i = num[0]; i >= 1; i--){ 22 if(num[i] > b.num[i]) return false; 23 if(num[i] < b.num[i]) return true; 24 } 25 } 26 return false; 27 } 28 highNum operator + (const highNum& b) const{ 29 highNum c = highNum(max(num[0], b.num[0])); 30 for(int i = 1; i <= c.num[0]; i++){ 31 c.num[i] += num[i] + b.num[i]; 32 c.num[i + 1] += c.num[i] / M; 33 c.num[i] %= M; 34 } 35 while(c.num[c.num[0] + 1] > 0){ 36 c.num[0]++; 37 c.num[c.num[0] + 1] += c.num[c.num[0]] / M; 38 c.num[c.num[0]] %= M; 39 } 40 return c; 41 } 42 highNum operator * (const int b) const{ 43 highNum c = highNum(num[0]); 44 for(int i = 1; i <= c.num[0]; i++){ 45 c.num[i] += num[i] * b; 46 c.num[i + 1] += c.num[i] / M; 47 c.num[i] %= M; 48 } 49 while(c.num[c.num[0] + 1] > 0){ 50 c.num[0]++; 51 c.num[c.num[0] + 1] += c.num[c.num[0]] / M; 52 c.num[c.num[0]] %= M; 53 } 54 while(c.num[c.num[0]] == 0 && c.num[0] > 1) c.num[0]--; 55 return c; 56 } 57 highNum operator * (const highNum& b) const{ 58 highNum c = highNum(num[0] + b.num[0]); 59 for(int i = 1; i <= num[0]; i++){ 60 for(int j = 1; j <= b.num[0]; j++){ 61 c.num[i + j - 1] += num[i] * b.num[j]; 62 c.num[i + j] = c.num[i + j - 1] / M; 63 c.num[i + j - 1] %= M; 64 } 65 } 66 while(c.num[c.num[0] + 1] > 0){ 67 c.num[0]++; 68 c.num[c.num[0] + 1] += c.num[c.num[0]] / M; 69 c.num[c.num[0]] %= M; 70 } 71 while(c.num[c.num[0]] == 0 && c.num[0] > 1) c.num[0]--; 72 return c; 73 } 74 }; 75 76 ostream& operator << (ostream& o, highNum& b){ 77 o << b.num[b.num[0]]; 78 o.setf(ios::fixed); 79 o.width(8); 80 o.fill(‘0‘); 81 for(int i = b.num[0] - 1; i >= 1; i--){ 82 o << b.num[i]; 83 } 84 return o; 85 }
标签:ios this for memcpy als bsp set int --
原文地址:http://www.cnblogs.com/geloutingyu/p/7414080.html