zoukankan      html  css  js  c++  java
  • 高精度加法

     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 }
  • 相关阅读:
    转:超级好用的流程图js框架
    流程图插件
    转:介绍几个著名的实用的Java反编译工具,提供下载
    关于 web.config impersonate 帐号模拟
    SQLSERVER 使用 ROLLUP 汇总数据,实现分组统计,总计(合计),小计
    【论文排版工具】——LaTeX的安装及使用(MiKTeX+TexStudio+Windows)
    C语言输入带空格的字符串
    SQL-连接查询:left join,right join,inner join,full join之间的区别
    MySQL与Oracle的隔离级别
    区块链节点运维相关
  • 原文地址:https://www.cnblogs.com/zhonghaoxi/p/2686938.html
Copyright © 2011-2022 走看看