poj2389 Bull Math

来源:互联网 发布:高仿人民币淘宝支付 编辑:程序博客网 时间:2024/06/05 16:40

题目链接:http://poj.org/problem?id=2389
题意:给你两个数,让你输出相乘的结果
解析:高进度乘法,c++用数组来模拟,java用BigInteger

#include <string>#include <cstring>#include <cstdio>#include <iostream>using namespace std;const int maxn = 1205;int a[maxn],b[maxn];int c[maxn];int main(void){    string t1,t2;    cin>>t1>>t2;    memset(a,0,sizeof(a));    memset(b,0,sizeof(b));    a[0] = t1.length(),b[0] = t2.length();    for(int i=1;i<=a[0];i++)        a[i] = t1[a[0]-i] - '0';    for(int i=1;i<=b[0];i++)        b[i] = t2[b[0]-i] - '0';    int lenc = 1,x = 0;    for(int i=1;i<=a[0];i++)    {        x = 0;        for(int j=1;j<=b[0];j++)        {            c[i+j-1] = a[i]*b[j]+x+c[i+j-1];            x = c[i+j-1]/10;            c[i+j-1]%=10;        }        c[i+b[0]] = x;    }    lenc = a[0]+b[0];    while(c[lenc]==0 && lenc>1)        lenc--;    for(int i=lenc;i>=1;i--)        printf("%d",c[i]);    puts("");    return 0;}
import java.math.BigInteger;import java.util.Scanner;public class Main{    public static void main(String[] args) {        Scanner cin = new Scanner(System.in);        BigInteger a = cin.nextBigInteger();        BigInteger b = cin.nextBigInteger();        BigInteger ans = a.multiply(b);        System.out.println(ans);        cin.close();    }}
原创粉丝点击