草草浮力影院

核心内容摘要

掘金时代的掌上智库:免费行情软件app大全3,让你离财富更近一步
颠覆感官的视觉饕餮:为什么“99精品在线观视频免费看”成为了现代人的精神避风港?

甘雨:当冰封的爱意遇上滚烫的思念,白水难题如何化解?

当在减法计算中有时候数很大当超出long long 的范围的时候我们需要利用高精度算法来计算。

此时我们不在利用int/long long 来存储数据而是用string来存储数据。

用字符串存储两个很大的整数在用数组存储数据之前需要进行判断减数和被减数谁更大谁大把谁当成被减数如果被减数减数最后在前面加一个负号即可之和再开辟两个数组把两个字符串里面存储的数字逆序存储在int数组中保证两个数字的低位对齐方便计算之和再遍历长度最长的那个数据让两个数组对应下标的值相减这个时候会产生借位问题以十进制为例当被减数该下标的值小于减数该下标的值就让该下标1对应的值减一该下标的值10之后再喝减数该下标的值相减其他进制n进制只需要把10换成n即可16进制除外需要转换字母在输出的时候要注意可能会有前导0就是比如222和221按以上方法会输出001我们需要删除前面的两个0删除前导0之后在进行输出注意如果前面被除数和除数进行了交换需要加负号具体代码/注释如下#includebits/stdc.h using namespace std; int main() { //用数组模拟高精度 //整型数组 //反转存储低位对齐 //高精度算法只能输入字符串 string s1, s2; cin s1 s2; int flag 1; //标记判断什么时候两个数交换 //当第二个数大于第一个数的时候两数交换让大数减小数 //不能直接s2s1因为当两个字符串的长度不一样的时候且第一个字符串的前几个字符比s2大的时候就无法正确比较 if ((s2s1s

size()s

size())||s

size()s

size()) { string s3; s3 s2; s2 s1; s1 s3; flag 0; } int lmax max(s

size(), s

size()); vectorint vec3(lmax

; vectorint vec1(lmax

; vectorint vec2(lmax

; //给两数组赋值 for (int i 0; i s

size();i) { vec1[s

size() - i] s1[i]-0; //赋值为和字符‘0’的差值不可以使用stoi因为这是字符转数字 } for (int i 0; i s

size(); i) { vec2[s

size() - i] s2[i]-0; } for (int i 1; i lmax;i) { if (vec1[i]vec2[i]) { //当被减数当位数字小于减数当位数字就需要借位 vec1[i 1]--; //借位 vec1[i] 10; //n进制把10换成n } vec3[i] vec1[i] - vec2[i]; } while (vec3[lmax]0lmax

{ //因为数组从下标1开始存的数所以lmax得大于1 lmax--; //删除高位的0 } if (!flag) { //如果满足上面交换就需要加负号 cout -; } for (int i lmax; i 1;i--) { cout vec3[i]; } }

麻花星空无限MV免费播放-麻花星空无限MV免费播放应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123