首页 > 其他 > 详细

高精度

时间:2019-11-06 16:37:03      阅读:72      评论:0      收藏:0      [点我收藏+]

说明

希望出了错误, 您能够大方地花些时间, 斧正代码。 感谢!

code

#include<cstdio>
#include<string>
#include<algorithm>
#include<iostream>
using namespace std;
const int N = 100000;

int a[N], b[N], c[N], lena, lenb, lenc;
string x, y;

void jinwei() {
    for(int i = 1; i <= lenc; i++) if(c[i] >= 10) {
        c[i+1] += c[i]/10;
        c[i] %= 10;
        if(i == lenc) lenc++;
    }
    while(lenc && c[lenc] == 0) lenc--;//保证lenc不为负 
}

int main() {
    cin>>x>>y;
    lena = x.length(), lenb = y.length();
    /*if(lena < lenb || (lena==lenb && x < y)) {//减法时使用 
        swap(x, y);
        swap(lena, lenb);//保证a>=b 
        printf("-");
    }*/
    for(int i = 0; i < lena; i++) a[lena-i] = x[i]-'0';
    for(int i = 0; i < lenb; i++) b[lenb-i] = y[i]-'0';
//  for(int i = lena; i >= 1; i--) printf("%d", a[i]);
//  printf("\n");
//  for(int i = lenb; i >= 1; i--) printf("%d", b[i]);
//  printf("\n");
    
//高精加: 非负数相加 
/*  lenc = max(lena, lenb);
    for(int i = 1; i <= lenc; i++) c[i] = a[i]+b[i];
    jinwei();*/
    
//高精减 
/*  for(int i = 1, j = 1; i <= lena || j <= lenb; i++, j++) {
        if(a[i] < b[i]) {a[i] += 10; --a[i+1];}
        c[i] = a[i] - b[i];
    }
    lenc = lena;
    while(c[lenc] == 0 && lenc) lenc--;//注意使lenc不为负 */
    
//高精乘
/*  for(int i = 1; i <= lena; i++) 
        for(int j = 1; j <= lenb; j++) 
            c[i+j-1] += a[i]*b[j]; 
    lenc = lena+lenb-1;
    jinwei();*/ 
    if(lenc == 0) printf("0");
    else for(int i = lenc; i > 0; i--)  printf("%d", c[i]);
    return 0;
}
//高精除低精 
/*  for(int i = lena; i >= 1; i--) {
        a[i-1] += (a[i]%k)*10;
        a[i] = a[i]/k;
    }
    while(a[lena] == 0 && lena) lena--;
    if(lena == 0) printf("0");
    else for(int i = lena; i >= 1; i--) printf("%d", a[i]);*/
//高精%低精 
/*  int yushu = 0;
    for(int i = lena; i >= 1; i--) {
        yushu = yushu*10+a[i];
        yushu %= k;
    } 
    printf("%d", yushu);*/

高精度

原文:https://www.cnblogs.com/tyner/p/11805752.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!