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 }
  • 相关阅读:
    GET POST方法长度限制(转)
    解决Android LogCat 输出乱码的问题(转)
    Supported Values for @SuppressWarnings(转)
    Gson通过借助TypeToken获取泛型参数的类型的方法(转)
    使用GSON和泛型解析约定格式的JSON串(转)
    HDU 4423 Simple Function(数学题,2012长春D题)
    VIM简单配置(windows)
    LightOJ 1074
    HDU 4763 Theme Section (2013长春网络赛1005,KMP)
    HDU 4764 Stone (2013长春网络赛,水博弈)
  • 原文地址:https://www.cnblogs.com/zhonghaoxi/p/2686938.html
Copyright © 2011-2022 走看看