POJ2389 Bull Math
/*
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的更多相关文章
- POJ2389 Bull Math【大数】
Bull Math Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15040 Accepted: 7737 Descri ...
- Poj OpenJudge 百练 2389 Bull Math
1.Link: http://poj.org/problem?id=2389 http://bailian.openjudge.cn/practice/2389/ 2.Content: Bull Ma ...
- BZOJ1754: [Usaco2005 qua]Bull Math
1754: [Usaco2005 qua]Bull Math Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 374 Solved: 227[Submit ...
- 1754: [Usaco2005 qua]Bull Math
1754: [Usaco2005 qua]Bull Math Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 398 Solved: 242[Submit ...
- POJ 2389 Bull Math(水~Java -大数相乘)
题目链接:http://poj.org/problem?id=2389 题目大意: 大数相乘. 解题思路: java BigInteger类解决 o.0 AC Code: import java.ma ...
- BZOJ 1754: [Usaco2005 qua]Bull Math
Description Bulls are so much better at math than the cows. They can multiply huge integers together ...
- [PKU2389]Bull Math (大数运算)
Description Bulls are so much better at math than the cows. They can multiply huge integers together ...
- poj 2389.Bull Math 解题报告
题目链接:http://poj.org/problem?id=2389 题目意思:就是大整数乘法. 题目中说每个整数不超过 40 位,是错的!!!要开大点,这里我开到100. 其实大整数乘法还是第一次 ...
- 【BZOJ】1754: [Usaco2005 qua]Bull Math
[算法]高精度乘法 #include<cstdio> #include<algorithm> #include<cstring> using namespace s ...
随机推荐
- android 构建GPS Provide步骤及信息
构建GPS Provide步骤及信息 1. 用GPS2GoogleEarth录制KML文件 2. KML文件 2.1 经纬度解析 <LineString> <coordina ...
- C 中 main 函数的參数
看到不同的人写出的 C 或者 C++ 程序时,可能会出现不一样的 main 函数的定义,以下的几种定义方式都是对的: int main(void) int main(int argc) i ...
- luogu1347 排序
题目大意 一个不同的值的升序排序数列指的是一个从左到右元素依次增大的序列.给你一系列形如A<B的关系,并要求你判断是否能够根据这些关系确定这个数列的顺序(能,矛盾,不确定).确定n个元素的顺序后 ...
- Uva 11021(概率)
题意:有k只麻球,每只只能活一天,但临死之前可能产生新麻球,生出i个麻球的概率为pi,给定m,求m天后所有麻球都死亡的概率 输入格式 输入一行为测试数据的组数T,每组数据第一行为3个整数n,k,m;已 ...
- html中map标签和area标签的应用
map标签的用途:是与img标签绑定使用的,常被用来赋予给客户端图像某处区域特殊的含义,点击该区域可跳转到新的文档. 因为map标签是与img标签绑定使用的,所以我们需要给map标签添加ID和name ...
- Java I/O streams
I/O Streams Byte Streams 输入输出以字节为单位,所有的使用字节流的类都继承自 InputStream 和 OutputStream. Byte Streams 属于 low-l ...
- javaweb 之 代理模式
一.动态代理 1.1.代理模式 什么是代理模式及其作用 Proxy Pattern(即:代理模式),23种常用的面向对象软件的设计模式之一 代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问 ...
- Java语言基础(数组)
Java语言基础(数组概述和定义格式说明) A:为什么要有数组(容器) 为了存储同种数据类型的多个值 B:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. 数组既可以存储基本数 ...
- 使用postman模拟登录请求
Cookie 可以写在Headers里面
- Java为什么需要基本类型
提问 首先抛出问题吧:Java为什么需要基本类型? 最开始遇到这个问题的场景不记得了,但是一查之下,发现一个问题:Java既然是面向对象的,宣称一切都是对象,为什么还有基础类型. 先上结论 为了性能+ ...