高精度运算-424 integer inquiry
2016-07-28 19:31
459 查看
题目大意:高精度计算
解题过程:虽然很简单,但是WA了无数次,仔细检查之后,主要问题出在,虽然输入过程中字符串最长只有100,但是计算结果最长有102,改正过后AC
正确代码:
解题过程:虽然很简单,但是WA了无数次,仔细检查之后,主要问题出在,虽然输入过程中字符串最长只有100,但是计算结果最长有102,改正过后AC
正确代码:
# include <cstdio> # include <cstdlib> # include <ctime> # include <cmath> # include <iostream> # include <fstream> # include <cstring> # include <string> # define maxn 200 //* #define fin cin #define fout cout //*/ using namespace std; /* ifstream fin("in.txt"); ofstream fout("out.txt"); //*/ struct bign{ int len,s[maxn]; bign(){ memset(s,0,sizeof(s)); len=1; } bign operator =(const char* num){ len=strlen(num); int i; for(i=0;i<len;i++){ if(num[i]!='0') break; } for(int j=len-1,k=0;j>=i;j--,k++){ s[k]=num[j]-'0'; } len-=i; s[len]='\0'; return *this; } bign operator = (int num){ char s[maxn]; sprintf(s,"%d",num); * this=s; //调用上一个函数 return *this; } //为了能直接赋值,增加以下两个函数 bign x=num; bign(int num){ *this=num; } bign(const char* num){ *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; if(i<len) x+=s[i]; if(i<b.len) x+=b.s[i] ; c.s[c.len++]=x%10; g=x/10; } return c; } //将int数组保存的结果转化为字符串 string str() const { 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){ string s; in>>s; x=s.c_str(); return in; } ostream& operator <<(ostream &out,bign& x){ out<<x.str(); return out; }//注意,连接顺序,是反向连接 bign factor[200]; int main() { int numoffac=0; bign result=0; char temp[maxn]; while(fin>>temp&&strcmp(temp,"0")!=0){ factor[numoffac]=temp; result=result+factor[numoffac]; numoffac++; } fout<<result; fout<<endl; return 0; }
相关文章推荐
- 玩转iOS开发:《使用系统自定义UIActivity进行内容分享》
- 虚幻4 制作UI粒子系统插件
- easyUI前后台分页代码实现
- STL学习之路(一) deque
- 虚幻4 创建选择资源的UI
- easyui
- Required field 'sessionHandle is unset !’
- 解决macro "__TIME__" might prevent reproducible builds [-Werror=date-time]错误
- tornado RequestHandler request.body & request.arguments
- Method to remove Tablet nav
- java语言基础入门——String、StringBuffer、StringBuilder的比较
- Error in XmlSqlMapClientBuilder. Alias name conflict occurred.
- easyui的导入和使用
- UIScrollView下拉实现图片放大或缩小
- IOS-- UIView中的坐标转换
- 基于口令和证书认证(TrueLicense)的接口调用工具库的封装设计 By 嗡汤圆
- 点击图片实现放大或缩小
- 【HDU】2604 - Queuing(递推 & 思维 & 矩阵构造 & 快速幂)
- dojo中的query
- 生产者消费者模型——blocking queue和CountDownLaunch