zoukankan      html  css  js  c++  java
  • 51nod 1027大数乘法

    题目链接:51nod 1027大数乘法

    直接模板了。

     1 #include<cstdio>
     2 #include<cstring>
     3 using namespace std;
     4 const int N = 1001;
     5 const int DLEN = 4;
     6 const int mod = 10000;
     7 int alen, blen;
     8 int ans_len;
     9 char a1[N], b1[N];
    10 int a[600], b[600];
    11 int ans[600];
    12 
    13 void BigInt(const char s[], int (&c)[600], int &len){
    14     memset(c, 0, sizeof(c));
    15     int L = strlen(s);
    16     len = L / DLEN;
    17     if(L%DLEN) len++;
    18     int cnt = 0;
    19     for(int i = L-1; i >= 0 ; i -= DLEN){
    20         int k = i - DLEN + 1;
    21         if(k < 0) k = 0;
    22         int t = 0;
    23         for(int j = k; j <= i; ++j)
    24             t = t * 10 + s[j] - '0';
    25         c[cnt++] = t;
    26     }
    27 }
    28 void multi(){
    29     int i, j;
    30     for(i = 0; i < alen; ++i){
    31         int up = 0;
    32         for(j = 0; j < blen; ++j){
    33             int t = a[i] * b[j] + ans[i+j] + up;
    34             up = t / mod;
    35             ans[i+j] = t % mod;
    36         }
    37         if(up != 0)
    38             ans[i+j] = up;
    39     }
    40     ans_len = alen + blen;
    41     while(ans[ans_len-1] == 0 && ans_len > 1)
    42         ans_len--;
    43 
    44     printf("%d", ans[ans_len-1]);
    45     for(i = ans_len-2; i >= 0; i--)
    46         printf("%04d", ans[i]);
    47     puts("");
    48 }
    49 int main(){
    50     scanf("%s%s", a1, b1);
    51     BigInt(a1, a, alen);
    52     BigInt(b1, b, blen);
    53     multi();
    54     return 0;
    55 }
    View Code
  • 相关阅读:
    题解:CF1494 F. Delete The Edges
    「CEOI2011」选做
    题解:「CEOI2017」Chase
    学习笔记:《具体数学》问题整理
    题解:「COCI2019」 Transport
    【做题记录】位运算
    线性DP
    虚树 virtual-tree
    三元环计数
    长链剖分
  • 原文地址:https://www.cnblogs.com/GraceSkyer/p/5963054.html
Copyright © 2011-2022 走看看