zoukankan      html  css  js  c++  java
  • 高精度简单练习 【模板】

    codevs 3115 3116 3117

     1 #include <algorithm>
     2 #include <iostream>
     3 #include <cstring>
     4 
     5 using namespace std;
     6 
     7 string str_a,str_b;
     8 int c[555],a[555],b[555];
     9 int len_a,len_b,len_c,x;
    10     
    11 void add()
    12 {
    13     memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));
    14     for(int i=0;i<len_a;i++) a[len_a-i]=str_a[i]-'0';
    15     for(int i=0;i<len_b;i++) b[len_b-i]=str_b[i]-'0';
    16     len_c=1,x=0;
    17     while(len_c<=len_a||len_c<=len_b)
    18     {
    19         c[len_c]=a[len_c]+b[len_c]+x;
    20         x=c[len_c]/10;
    21         c[len_c]%=110;
    22         len_c++;
    23     }
    24     c[len_c]=x;
    25     while(c[len_c]==0) len_c--;
    26     for(int i=len_c;i>=1;i--)
    27         cout<<c[i];
    28     cout<<endl;
    29 }
    30 
    31 void subtract()
    32 {
    33     memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));
    34     if(len_a<len_b||(len_a==len_b&&str_a[0]<str_b[0]))
    35     {
    36         cout<<'-';
    37         swap(str_a,str_b);
    38         swap(len_a,len_b);
    39     }
    40     for(int i=0;i<len_a;i++) a[len_a-i]=str_a[i]-'0';
    41     for(int i=0;i<len_b;i++) b[len_b-i]=str_b[i]-'0';
    42     len_c=1;
    43     while(len_c<=len_a||len_c<=len_b)
    44     {
    45         if(a[len_c]<b[len_c]||a[len_c]<0)
    46         {
    47             a[len_c]+=10;
    48             a[len_c+1]--;
    49         }
    50         c[len_c]=a[len_c]-b[len_c];
    51         len_c++;
    52     }
    53     while(c[len_c]==0&&len_c>1)    len_c--;
    54     for(int i=len_c;i>=1;i--)
    55         cout<<c[i];
    56     cout<<endl;
    57 }
    58 
    59 void multiply()
    60 {
    61     memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));
    62     for(int i=0;i<len_a;i++) a[len_a-i]=str_a[i]-'0';
    63     for(int i=0;i<len_b;i++) b[len_b-i]=str_b[i]-'0';
    64     len_c=1,x=0;
    65     for(int i=1;i<=len_a;i++)
    66     {
    67         x=0;
    68         for(int j=1;j<=len_b;j++)
    69         {
    70             c[i+j-1]+=a[i]*b[j]+x;
    71             x=c[i+j-1]/10;
    72             c[i+j-1]%=10;
    73         }
    74         c[i+len_b]=x;
    75     }
    76     len_c=len_a+len_b;
    77     while(c[len_c]==0&&len_c>1)    len_c--;
    78     for(int i=len_c;i>=1;i--)
    79         cout<<c[i];
    80     cout<<endl;
    81 }
    82 
    83 int main()
    84 {
    85     cin>>str_a>>str_b;
    86     len_a=str_a.length(),
    87     len_b=str_b.length();
    88     add();subtract();multiply();
    89     return 0;
    90 }
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    JSONObject简介
    android:layout_gravity 和android:gravit的区别?
    CountDownTimer,0,0
    java应用集锦9:httpclient4.2.2的几个常用方法,登录之后访问页面问题,下载文件
    HttpClient学习系列 -- 学习总结
    创建多线程的HttpClient
    HttpClient4.X 升级 入门 + http连接池使用
    Java Executors(线程池)
    [微软官方]SQLSERVER的兼容级别
    vSphere Client 连接ESXi 或者是vCenter 时虚拟机提示VMRC异常的解决办法
  • 原文地址:https://www.cnblogs.com/Shy-key/p/6653583.html
Copyright © 2011-2022 走看看