• 高精度加法


     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cstring>
     4 
     5 using namespace std;
     6 
     7 char s1[100],s2[100];
     8 
     9 int x[100],y[100],z[100];
    10 
    11 int max(int a,int b)
    12 {
    13     if (a>b) return a;
    14     else return b;
    15 }
    16 
    17 int main()
    18 {
    19     scanf("%s%s",s1+1,s2+1);//读入两个字符串 +1是把它们读到1的位置 就不用从0开始了
    20     int l1=strlen(s1+1);//第一个数的位数
    21     int l2=strlen(s2+1);//第二个数的位数
    22     int l=max(l1,l2);//较长的那个位数
    23     for (int a=1;a<=l1;a++)
    24         x[l1-a+1]=s1[a]-'0';//把第一个字符串翻转之后存到x中去
    25     for (int a=1;a<=l2;a++)
    26         y[l2-a+1]=s2[a]-'0';//把第二个字符串翻转之后存到y中去
    27     for (int a=1;a<=l;a++)
    28         z[a]=x[a]+y[a];//把它们加起来后存到z里面去
    29     int b=0;//b代表从低位进了多大的数上来
    30     for (int a=1;a<=l;a++)
    31     {
    32         z[a]=z[a]+b;//进上来的数
    33         b=z[a]/10;//更新b
    34         z[a]=z[a] % 10;//只保留最低位
    35     }
    36     if (b!=0)//还有进位
    37     {
    38         l++;//位数+1
    39         z[l]=b;//更新最高位
    40     }
    41     for (int a=l;a>=1;a--)
    42         printf("%d",z[a]);
    43     printf("\n");//输出
    44 
    45     return 0;
    46 }
    View Code
     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cstring>
     4 
     5 using namespace std;
     6 
     7 char s1[100],s2[100];
     8 
     9 int x[100],y[100],z[100];
    10 
    11 int max(int a,int b)
    12 {
    13     if (a>b) return a;
    14     else return b;
    15 }
    16 
    17 int main()
    18 {
    19     scanf("%s%s",s1+1,s2+1);//读入两个字符串 +1是把它们读到1的位置 就不用从0开始了
    20     int l1=strlen(s1+1);//第一个数的位数
    21     int l2=strlen(s2+1);//第二个数的位数
    22     int l=max(l1,l2);//较长的那个位数
    23     for (int a=1;a<=l1;a++)
    24         x[l1-a+1]=s1[a]-'0';//把第一个字符串翻转之后存到x中去
    25     for (int a=1;a<=l2;a++)
    26         y[l2-a+1]=s2[a]-'0';//把第一个字符串翻转之后存到y中去
    27     for (int a=1;a<=l;a++)
    28         z[a]=x[a]+y[a];//把它们加起来后存到z里面去
    29     int b=0;//b代表从低位进了多大的数上来
    30     for (int a=1;a<=l;a++)
    31     {
    32         z[a]=z[a]+b;//进上来的数
    33         b=z[a]/10;//更新b
    34         z[a]=z[a] % 10;//只保留最低位
    35     }
    36     if (b!=0)//还有进位
    37     {
    38         l++;//位数+1
    39         z[l]=b;//更新最高位
    40     }
    41     for (int a=l;a>=1;a--)
    42         printf("%d",z[a]);
    43     printf("\n");//输出
    44 
    45     return 0;
    46 }
  • 相关阅读:
    Python 进程管理工具 Supervisor 使用教程
    Python cx_Oracle 安装小记
    使用 IIS 过程中遇到的一些问题
    http请求的post提交数据的四种格式form-data,row,binary,urlencode
    sqlmap 笔记
    数据库服务器及命令行相关操作
    SDL应用软件安全研发周期
    ldap目录访问协议
    计算机行业证书解释
    gunicorn Python部署应用
  • 原文地址:https://www.cnblogs.com/zhonghaoxi/p/2686938.html
Copyright © 2020-2023  润新知