/*
POJ2389 Bull Math
http://poj.org/problem?id=2389
高精度乘法
*
*/
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int Nmax=;
struct BigInt
{
int a[Nmax];
int n;
void init()
{
for(int i=;i<Nmax;i++)
a[i]=;
}
BigInt()
{
init();
n=;
}
BigInt(int _a[],int _n)
{
init();
n=_n;
//for(int i=0;i<Nmax;i++)
//a[i]=0;
for(int i=;i<=n;i++)
a[i]=_a[i];
maintain();
}
BigInt(char s[])
{
init();
n=strlen(s+);
for(int i=;i<=n;i++)
a[i]=s[n-i+]-'';
maintain();
}
BigInt(long long x)
{
init();
n=;
while(x>0LL)
{
a[++n]=x%10LL;
x/=10LL;
}
}
BigInt(int x)
{
init();
n=;
while(x>)
{
a[++n]=x%;
x/=;
}
}
void read()
{
init();
n=;
char c=getchar();
if(c==-)
return;
while(c==' ' || c=='\n' )
{
c=getchar();
if(c==-)
break;
}
int num[Nmax];
while(c!=' ' && c!='\n' && c!=-)
{
num[++n]=c-'';
c=getchar();
}
for(int i=;i<=n;i++)
a[i]=num[n-i+];
maintain();
}
void print()
{
if(n==)
printf("");
for(int i=n;i>=;i--)
printf("%d",a[i]);
}
void maintain()
{
for(int i=;i<=n;i++)
{
a[i+]+=a[i]/;
a[i]%=;
}
int j=n+;
while(a[j]!=)
{
a[j+]+=a[j]/;
a[j]%=;
j++;
}
n=j-;
while(a[n]== && n>)
n--;
}
friend BigInt operator + (BigInt a,BigInt b)
{
int len=max(a.n,b.n);
BigInt ans;
ans.n=len;
for(int i=;i<=len;i++)
ans.a[i]=a.a[i]+b.a[i];
ans.maintain();
return ans;
}
//friend BigInt operator - (BigInt a,BigInt b)
//{
//int len=max(a.n,b.n);
//BigInt ans;
//ans.n=len;
//for(int i=1;i<=len;i++)
//ans.a[i]=a.a[i]-b.a[i];
//for(int i=1;i<=len;i++)
//{
//if(ans.a[i]<0)
//{
//ans.a[i]+=10;
//a.a[i+1]--;
//}
//ans.a[i]+=10
//}
//}
friend BigInt operator * (BigInt b,int a)
{
int n=b.n;
BigInt ans;
ans.n=n;
for(int i=;i<=n;i++)
ans.a[i]=b.a[i]*a;
ans.maintain();
return ans;
}
friend BigInt operator * (int a,BigInt b)
{
int n=b.n;
BigInt ans;
ans.n=n;
for(int i=;i<=n;i++)
ans.a[i]=b.a[i]*a;
ans.maintain();
return ans;
}
friend BigInt operator * (BigInt a,BigInt b)
{
BigInt ans;
ans.n=a.n+b.n+;
int k;
for(int i=;i<=a.n;i++)
for(int j=;j<=b.n;j++)
ans.a[j+i-]+=a.a[i]*b.a[j];
ans.maintain();
return ans;
}
};
int main()
{
char s[];
char s1[];
BigInt a,b;
//freopen("test.in","r",stdin);
a.read();
b.read();
(a*b).print();
printf("\n");
return ;
}

POJ2389 Bull Math的更多相关文章

  1. POJ2389 Bull Math【大数】

    Bull Math Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15040   Accepted: 7737 Descri ...

  2. Poj OpenJudge 百练 2389 Bull Math

    1.Link: http://poj.org/problem?id=2389 http://bailian.openjudge.cn/practice/2389/ 2.Content: Bull Ma ...

  3. BZOJ1754: [Usaco2005 qua]Bull Math

    1754: [Usaco2005 qua]Bull Math Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 374  Solved: 227[Submit ...

  4. 1754: [Usaco2005 qua]Bull Math

    1754: [Usaco2005 qua]Bull Math Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 398  Solved: 242[Submit ...

  5. POJ 2389 Bull Math(水~Java -大数相乘)

    题目链接:http://poj.org/problem?id=2389 题目大意: 大数相乘. 解题思路: java BigInteger类解决 o.0 AC Code: import java.ma ...

  6. BZOJ 1754: [Usaco2005 qua]Bull Math

    Description Bulls are so much better at math than the cows. They can multiply huge integers together ...

  7. [PKU2389]Bull Math (大数运算)

    Description Bulls are so much better at math than the cows. They can multiply huge integers together ...

  8. poj 2389.Bull Math 解题报告

    题目链接:http://poj.org/problem?id=2389 题目意思:就是大整数乘法. 题目中说每个整数不超过 40 位,是错的!!!要开大点,这里我开到100. 其实大整数乘法还是第一次 ...

  9. 【BZOJ】1754: [Usaco2005 qua]Bull Math

    [算法]高精度乘法 #include<cstdio> #include<algorithm> #include<cstring> using namespace s ...

随机推荐

  1. poj 2135 Farm Tour 【无向图最小费用最大流】

    题目:id=2135" target="_blank">poj 2135 Farm Tour 题意:给出一个无向图,问从 1 点到 n 点然后又回到一点总共的最短路 ...

  2. luogu1315 观光公交

    题目大意 一个公交车在一条线上从1站.2站走到n站,站站间有距离.另有m个乘客在时间点t在a站等候要到b站.对于一个站,如果车比人早到,则车等人,如果人比车早到,则人等车(我一开始做题时把这个情况当作 ...

  3. Android开机logo修改方法 【转】

    本文转载自:http://blog.csdn.net/qq258711519/article/details/7766303 一体机平台开机logo修改方法 1:修改Kernel中的Logo: 若是要 ...

  4. DNS tunnel的原理及实战

    DNS tunnel的原理及实战 摘自:http://netsec.ccert.edu.cn/zhengming/2011/11/01/%E8%BD%AC%E8%BD%BD%EF%BC%9Adns-t ...

  5. thymeleaf 引入js css 无效

    转自:https://blog.csdn.net/qq_33833327/article/details/81388502

  6. npm中的 --save-dev

    当你为你的模块安装一个依赖模块时,正常情况下你得先安装他们(在模块根目录下npm install module-name),然后连同版本号手动将他们添加到模块配置文件package.json中的依赖里 ...

  7. C# How to convert MessageBodyStream to MemoryStream?

    通过WCF服务从数据库取文档数据时,返回的是Stream对象,在DevExpress的PDFViewer显示时,用PDFViewer.LoadDocunent(Stream stream);方法时,报 ...

  8. 开发辅助 | 阿里图标库iconfont入门使用

    目前大多数的互联网公司,前端开发和UI设计师配合中,针对设计师给图的效果图,前端开发工程师不再像往常一样对于细小图标进行切图,取而代之的是引用阿里图标库(http://iconfont.cn/):简单 ...

  9. Git Learning Part II - Working locally

    file status life circle basic: modified:   Examples: untracked: unmodified: modified: Git branching ...

  10. javascript 的逻辑中断(短路操作)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...