• POJ 1503 Integer Inquiry


    题意:给你至多100行超大整数,以0结束输入,要求你求出这些超大整数的和。

    高精度加法运算

    例如19999 + 999 + 9,看图更清晰

    高精度加法

    1、以字符串格式读入超大整数,然后将每一位转换成整型并逆序存放在数组中。

    2、把每次读入字符串的长度存放在0号元素中(sum[i][0])。

    3、将所有大整数的和存放在0号字符串中(sum[0])。

    4、从0号字符串最大处向前寻找第一个不为0的元素,然后逆序输出和。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 using namespace std;
     5 #define N 105
     6 
     7 char in[N];//s放大数,in为每次输入时的临时数组
     8 char s[N][N];
     9 
    10 int main()
    11 {
    12     int i,j,line,jin,he;//line为大数的行数,jin为进位,he为和
    13 
    14     for (i=0;;i++)
    15     {
    16         scanf("%[^
    ]",in);
    17         getchar();
    18 
    19         if (in[0]=='0'&&in[1]==0)
    20         {
    21             break;
    22         }
    23 
    24         s[i][0]=strlen(in);//0号元素记录长度
    25 
    26         for (j=1;j<=s[i][0];j++)//逆序放大整数
    27         {
    28             s[i][j]=in[s[i][0]-j]-'0';
    29         }
    30     }
    31 
    32     line=i;//记录数据行数
    33 
    34     for (i=1;i<line;i++)
    35     {
    36         jin=0;//进位标记归0
    37 
    38         for (j=1;j<N;j++)//进行加法运算
    39         {
    40             he=s[0][j]+s[i][j]+jin;
    41             jin=he/10;//进位
    42             s[0][j]=he%10;
    43         }
    44     }
    45 
    46     for (i=N-1;s[0][i]==0;i--);//从后往前找第一个不为0的数
    47 
    48     for (;i>=1;i--)//输出和
    49     {
    50         printf("%d",s[0][i]);//要用%d输出
    51     }
    52     printf("
    ");
    53 
    54     return 0;
    55 }
  • 相关阅读:
    Linux压缩和解压类指令
    Linux 搜索查找类指令
    Linux时间日期类指令
    Linux文件目录类指令
    Linux帮助指令
    Linux运行级别
    微信授权获取code/openid
    微信公众配置
    MySQL规范
    PHP7搭建项目遇到的坑
  • 原文地址:https://www.cnblogs.com/hemeiwolong/p/9084429.html
Copyright © 2020-2023  润新知