高精度-10106 product
来源:互联网 发布:mac os 10.6.8升级 编辑:程序博客网 时间:2024/05/29 09:22
题目大意:给出x和y,计算x*y
解题过程:WA4次,因为乘数为0时,会输出000000000……;还有初始化问题,因为在做加法时,不管两个因数的长短,直接加,这就要求保证bign中未用到的s数组元素必须为0,加上因数为0的判断和每次bign赋值时初始化之后,AC
正确代码:
# include <cstdio># include <cstdlib># include <ctime># include <cmath># include <iostream># include <fstream># include <cstring># include <string># define maxn 600//*#define fin cin#define fout cout//*/using namespace std;/*ifstream fin("in.txt");ofstream fout("out.txt");//*/struct bign{int len,s[maxn];bign(){len=1;memset(s,0,sizeof(s));}bign operator = (const char* num) {memset(s,0,sizeof(s));//每次赋值前初始化len=0;int i,length=strlen(num);for(i=0;i<length;i++){if(num[i]!='0') break;}for(int j=length-1;j>=i;j--){s[len++]=num[j]-'0';}if(i==length) {memset(s,0,sizeof(s));len=1;}return * this;} bign operator =(int num) {char s[maxn];sprintf(s,"%d",num);* this=s;return *this;}bign(const char * num){memset(s,0,sizeof(s));* this=num;}bign(int num){memset(s,0,sizeof(s));* this=num;}bign operator + (const bign& b) const{bign c;c.len=0;for(int i=0,g=0;g||i<max(len,b.len);i++){int x=g+s[i]+b.s[i];//需要保证s和b.s未用到的数字均为0c.s[c.len++]=x%10;g=x/10;}return c;}bign operator * (const bign& b) const{bign * mid=new bign[len];bign result=0;for(int i=0;i<len;i++){mid[i].len=i;for(int j=0,g=0;g||j<b.len;j++){int x=g+s[i]*b.s[j];mid[i].s[mid[i].len++]=x%10;g=x/10;}result=result+mid[i];} return result;}string str() {string res="";for(int i=0;i<len;i++){res=(char)(s[i]+'0')+res;}if(res=="") res="0";return res;}};istream& operator >> (istream& in,bign& x) {char s[maxn];in>>s;x=s;return in;}ostream& operator << (ostream& out,bign& x){out<<x.str();return out;}int main(){bign x,y;bign result;while(fin>>x>>y){if(x.str()=="0"||y.str()=="0") result=0;else result=x*y;fout<<result;fout<<endl;}return 0; }
0 0
- UVa 10106 Product (高精度)
- Product - UVa 10106 高精度
- 高精度-10106 product
- UVA 10106 Product 高精度乘法
- UVa 10106 - Product 高精度乘法-
- Uva 10106 Product (高精度相乘)
- UVA 10106 Product 高精度运算
- UVA 10106 Product (高精度乘法)
- uva 10106 Product(高精度乘法)
- UVA 10106 Product 简单高精度乘法
- UVA 10106 (暑假-高精度-A - Product)
- uva 10106 Product(高精度大数乘法)
- (高精度运算4.7.21)UVA 10106Product(大数乘法)
- uva 424 Integer Inquiry(高精度加法模板) uva 10106 Product(高精度乘法模板)
- 10106 - Product
- 10106 - Product()
- 10106 - Product
- 10106 - Product
- builtin descriptor types
- 晶振电路
- E - Beautiful Numbers
- Android 整合实现简单易用、功能强大的RecyclerView
- ubuntu:查看ubuntu系统的版本信息
- 高精度-10106 product
- USB库STM32F0x2移植到STM32F070笔记
- java中8种基本数据类型、基本数据类型的转换与运算符
- Android记忆之我的开始
- iOS开发-底层篇-Class详解
- printf输出问题和c语言求3,5,7整除的数的问题
- Qt自定义控件的创建与初步使用(二)之图片上绘制文字、箭头、曲线
- 报数
- java开发为什么要设置环境变量path,class path,java_home