UVA 10106 Product (高精度乘法)
来源:互联网 发布:linux中的pwd命令 编辑:程序博客网 时间:2024/05/29 09:38
给你A,B,求A乘B。
A和B都有250位,那么结果最多500位,注意长度。
#include <bits/stdc++.h>using namespace std;const int MAXN=9999;#define DLEN 4const int NNN=1e4+10;class BigNum{private: int a[NNN]; int len;public: BigNum(){len=1;memset(a,0,sizeof(a));} BigNum(const int); BigNum(const char*); BigNum operator^(const int &)const; BigNum operator*(const BigNum &)const; void print();};BigNum::BigNum(const char * s){ int t,k,index,L,i; memset(a,0,sizeof(a)); L=strlen(s); len=L/DLEN; if(L%DLEN)len++; index=0; for(i=L-1;i>=0;i-=DLEN) { t=0; k=i-DLEN+1; if(k<0)k=0; for(int j=k;j<=i;j++) t=t*10+s[j]-'0'; a[index++]=t; }}BigNum::BigNum(const int b){ int c,d=b; len=0; memset(a,0,sizeof(a)); while(d>MAXN) { c=d-(d/(MAXN+1))*(MAXN+1); d=d/(MAXN+1); a[len++]=c; } a[len++]=d;}BigNum BigNum::operator*(const BigNum &T)const{ BigNum ret; int i,j,up; int temp,temp1; for(i=0;i<len;i++) { up=0; for(j=0;j<T.len;j++) { temp=a[i]*T.a[j]+ret.a[i+j]+up; if(temp>MAXN) { temp1=temp-temp/(MAXN+1)*(MAXN+1); up=temp/(MAXN+1); ret.a[i+j]=temp1; } else { up=0; ret.a[i+j]=temp; } } if(up!=0) ret.a[i+j]=up; } ret.len=i+j; while(ret.a[ret.len-1]==0 && ret.len>1)ret.len--; return ret; }BigNum BigNum::operator^(const int &n)const{ BigNum t,ret(1); int i; if(n<0)exit(-1); if(n==0)return 1; if(n==1)return *this; int m=n; while(m>1) { t=*this; for(i=1;(i<<1)<=m;i<<=1) t=t*t; m-=i; ret=ret*t; if(m==1)ret=ret*(*this); } return ret;}void BigNum::print(){ int i; printf("%d",a[len-1]); for(i=len-2;i>=0;i--) printf("%04d",a[i]); printf("\n");}char c1[NNN],c2[NNN];int main(){ while(cin>>c1>>c2) {BigNum a(c1); BigNum b(c2); BigNum ans=a*b; ans.print(); } return 0;}
阅读全文
0 0
- UVA 10106 Product 高精度乘法
- UVa 10106 - Product 高精度乘法-
- UVA 10106 Product (高精度乘法)
- uva 10106 Product(高精度乘法)
- UVA 10106 Product 简单高精度乘法
- uva 10106 Product(高精度大数乘法)
- (高精度运算4.7.21)UVA 10106Product(大数乘法)
- UVa 10106 Product (高精度)
- Product - UVa 10106 高精度
- uva 424 Integer Inquiry(高精度加法模板) uva 10106 Product(高精度乘法模板)
- UVA 10106高精度乘法
- Uva 10106 Product (高精度相乘)
- UVA 10106 Product 高精度运算
- uva 10106 - Product 大数乘法
- UVA 10106-Product(大数乘法)
- UVA 10106 (暑假-高精度-A - Product)
- uva 10106 Product(大数乘法)
- UVA 10106 - Product(大数乘法)
- Python模块matlotlib之pylot.plot()
- Qt编写自定义控件及插件的使用
- 全局作用域,局部作用域,语句作用域,类作用域,命名作用域和文件作用域(转载)
- CMake Error: not providing "FindEigen3.cmake" in CMAKE_MODULE_PATH
- 这可能是最好的RxJava 2.x 教程(完结版)
- UVA 10106 Product (高精度乘法)
- VS2013+opencv3.0+QT5.7编译ok但是运行产生0xc000007b错误的解决方法
- DML与DDL
- unity蒙皮网格的换装实现
- php.ini中配置错误信息/笔记
- 模糊查询某个字段除以100去查询,处理特殊字符和0值
- Git简单使用
- AndroidStudio 2.3 NDK开发项目构建流程
- ACM 进阶