过大数据处理

来源:互联网 发布:购金蝶软件会计分录 编辑:程序博客网 时间:2024/04/29 20:37

      遇到无法用当前数据类型表示的数的时候,利用数组进行处理,按四位数一个单元保存数值

struct bigInteger { //高精度整数结构体int digit[maxDigits];int size;void init() { //初始化for (int i = 0; i < maxDigits; i++) digit[i] = 0;size = 0;}void set(int x) { //用一个普通整数初始化高精度整数init();do {digit[size++] = x % 10000;x /= 10000;} while (x != 0);}void output() { //输出for (int i = size - 1; i >= 0; i--) {if (i != size - 1) printf("%04d", digit[i]);else printf("%d", digit[i]);}printf("\n");}bigInteger operator * (int x) const { //高精度整数与普通整数的乘积bigInteger ret;ret.init();int carry = 0;for (int i = 0; i < size; i++) {int tmp = x * digit[i] + carry;carry = tmp / 10000;tmp %= 10000;ret.digit[ret.size++] = tmp;}if (carry != 0) {ret.digit[ret.size++] = carry;}return ret;}bigInteger operator + (const bigInteger &A) const { //高精度整数之间的加bigInteger ret;ret.init();int carry = 0;for (int i = 0; i < A.size || i < size; i++) {int tmp = A.digit[i] + digit[i] + carry;carry = tmp / 10000;tmp %= 10000;ret.digit[ret.size++] = tmp;}if (carry != 0) {ret.digit[ret.size++] = carry;}return ret;}bigInteger operator / (int x) const { //高精度整数除以普通整数bigInteger ret; //返回的高精度整数ret.init(); //返回值初始化int remainder = 0; //余数for (int i = size - 1; i >= 0; i--) { //从最高位至最低位依次完成计算int t = (remainder * 10000 + digit[i]) / x; //计算当前位数值加上高位剩余的余数的和对x求得的商int r = (remainder * 10000 + digit[i]) % x; //计算当前位数值加上高位剩余的余数的和对x求模后得的余数ret.digit[i] = t; //保存本位的值remainder = r; //保存至本位为止的余数}ret.size = 0; // 返 回 高 精 度 整 数 的 size 初 始 值 为 0, 即 当 所 有 位 数 字 都 为 0时, digit[0]代表数字0, 作为最高有效位, 高精度整数即为数字0for (int i = 0; i < maxDigits; i++) {if (digit[i] != 0) ret.size = i;} //若存在非0位,确定最高的非0位,作为最高有效位ret.size++; //最高有效位的下一位即为下一个我们不曾使用的digit数组单元,确定为size的值return ret;}int operator % (int x) const { //高精度整数对普通整数求余数int remainder = 0; //余数for (int i = size - 1; i >= 0; i--) {int t = (remainder * 10000 + digit[i]) / x;int r = (remainder * 10000 + digit[i]) % x;remainder = r;} //过程同高精度整数对普通整数求商return remainder; //返回余数}}a, b, c;

OJ:1198、1076、1080

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 ⅰpad屏幕动不了怎么办 苹果6plus满了怎么办 cf的fps低怎么办win7 游戏倒闭冲的钱怎么办 一闭眼就做噩梦怎么办 吃鸡游戏上瘾了怎么办 使命召唤7很卡怎么办 w10升级系统卡死怎么办 答题卡写错位置怎么办 高考答错区域该怎么办 荒野行动画面中间有条横怎么办 荒野行动pc闪退怎么办 幽灵行动荒野子弹没了怎么办 看门狗2枪没子弹怎么办 爱奇艺不小心删除了本地视频怎么办 80岁老太太就爱闹肚子怎么办? 皇牌空战5弹药不够怎么办 辐射4玩着头晕怎么办 官司打赢了法院不给钱怎么办 电脑玩dnf太卡怎么办 soul被禁止私聊怎么办 刺激战场空投挂树上怎么办 由于经济原因心态不好怎么办 公司经济不好不裁员怎么办 家里经济不好没有钱怎么办 银行柜员找不到工作怎么办 在球队中打替补怎么办 大学生毕业后找不到工作怎么办 30岁不敢换工作怎么办 投完简历没回复怎么办 工业废气一年总量超标怎么办 安监局行政处罚没能力交怎么办 被社会淘汰的人怎么办 宝宝吐奶的时候怎么办 网友要我发红包怎么办 电脑久了很慢怎么办 影驰显卡花屏怎么办 反恐精英全球攻势加载地图慢怎么办 老滚5视角锁死了怎么办 苹果描述文件没有了怎么办 苹果6s发热严重怎么办