zoukankan      html  css  js  c++  java
  • SDNU 1280.就问你慌不慌(高精度)

    Description

    求N进制的高精度加法

    Input

    第一行输入N(2≤N≤10)

    第二行两个数X Y(长度均≤100)

    Output

    输出N进制下X和Y的和

    Sample Input

    5
    2 4

    Sample Output

    11
    #include <cstdio>
    #include <iostream>
    #include <cmath>
    #include <string>
    #include <cstring>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <map>
    using namespace std;
    
    #define ll long long
    #define eps 1e-9
    
    const int inf = 0x3f3f3f3f;
    const int mod = 1e9+7;
    
    char ads[10000005];
    char s1[10005], s2[10005];
    int n;
    
    void additive(char* a, char* b)
    {
        memset(ads, 0, sizeof(ads));
        int len1, len2;
        len1 = strlen(a);
        len2 = strlen(b);
        if(len1 < len2)///保持len1是最长的
        {
            for(int i = 0; i<len2; i++)
                swap(a[i], b[i]);
            swap(len1, len2);
        }
        reverse(a, a + len1);
        reverse(b, b + len2);
        int t = 0, i;
        for(i = 0; i < len2; i++)///一遍求和一边求进制
        {
            ads[i] = ((a[i] - '0') + (b[i] - '0') + t) % n + '0';
            t = (a[i] + b[i] - '0' - '0' + t) / n;
        }
        for(int k = i; k < len1; k++)///处理较大的那个数没有加的那部分
        {
            ads[k] = (a[k] + t - '0') % n + '0';
            t = (a[k] + t - '0') / n;
        }
        if(t != 0)
            printf("%d", t);
        for(int m = len1 - 1; m >= 0; m--)
            printf("%c", ads[m]);
        printf("
    ");
    }
    
    int main()
    {
        scanf("%d", &n);
        cin>>s1>>s2;
        additive(s1, s2);
        return 0;
    }
  • 相关阅读:
    C#如何防止程序多次运行的技巧
    C#导出Excel按照指定格式设置单元格属性值
    js前台遍历后台返回的Datatable数据
    Datatable数据分组
    DataTable 详解(转)
    遍历Datatable
    DataTable转Json
    键值集合List转换成datatable
    DataTable转换成实体
    泛型集合与DataSet相互转换
  • 原文地址:https://www.cnblogs.com/RootVount/p/11340424.html
Copyright © 2011-2022 走看看