西安电子大学计算机考研复试机试(2019)+ 算法笔记 + 数学问题(大整数)

2019-04-13 13:04发布

将大整数用字符串存储起来,并将其每一位拆分开,按照字符的顺序存入int数组中, 数组的下标从大数字的低位到高位递增,数组的值即大整数每一位的值。其加减法,也是按位进行运算,注意进位和借位的处理即可。 #include #include #include #include using namespace std; struct bign { int d[1000]; int len; bign(){ // 构造函数是方便每次定义一个大整数时,都进行了初始化 memset(d,0,sizeof(d)); len = 0; } }; // 将字符串转化为大整数 bign change(char str[]) { bign a; a.len = strlen(str); int count = 0; // 去除大数字高位上的 0 for(int i=0;i b.len) return 1; else if(a.len == b.len){ for(int i=a.len-1;i > 0;i--){ if(a.d[i]>b.d[i]) return 1; else if (a.d[i]= 1 && c.d[c.len-1]==0){ c.len--; } return c; } // 打印大整数 void print(bign a){ for(int i=a.len-1;i>=0;i--){ cout<>str1>>str2){ bign a = change(str1); bign b = change(str2); if(compare(a,b)<0){ cout<<"-"; print(sub(b,a)); }else print(sub(a,b)); } return 0; }