hdoj1047 Integer Inquiry(大整数的相加)
来源:互联网 发布:道衍和尚 知乎 编辑:程序博客网 时间:2024/05/22 22:39
思路很简单,但感觉我做复杂了(┬_┬)
其实可以直接写一个两个大整数相加的函数,输入一个大整数就加一次。而我直接就输入所有数据,然后对全部数据一起处理,不仅耗费内存还耗费时间。
我的代码:
#include<stdio.h> #include<string>using namespace std;char a[105][105];int b[200];void change(char str[][105],int len,int k)//逆置字符串 {int i,j;char c;i=0;j=len-1;while(j>i){c=str[k][i];str[k][i]=str[k][j];str[k][j]=c;i++;j--;}}int main(){int t,len,max,k;scanf("%d",&t);while(t--){ max=-1;memset(a,'0',sizeof(a));memset(b,0,sizeof(b));int i=0;while(scanf("%s",a[i])&&a[i][0]!='0'){i++;}for(int j=0;j<i;j++)//逆置字符串,并记录最长的字符串长度 {len=strlen(a[j]);change(a,len,j);a[j][len]='0';if(max<len){max=len;k=j;}}for(int m=0;m<max;m++)for(int j=0;j<i;j++)//各位相加保存到对应数组b中 {b[m]+=a[j][m]-'0';}int r=0;int temp;for(int j=0;j<max;j++)//进位处理,使每个单元只保存一个个位数 {temp=r+b[j];b[j]=temp%10;r=temp/10;}while(r)//进位处理 {b[max++]=r%10;r=r/10;}for(int j=max-1;j>0;j--)printf("%d",b[j]);printf("%d\n",b[0]);if(t>0)printf("\n");//格式! }return 0;}
更简易的做法http://www.cnblogs.com/kuangbin/archive/2012/08/13/2635653.html
#include<stdio.h>#include<string>#include<iostream>using namespace std;//高精度加法//只能是两个正数相加string add(string str1,string str2)//高精度加法{ string str; int len1=str1.length(); int len2=str2.length(); //前面补0,弄成长度相同 if(len1<len2) { for(int i=1;i<=len2-len1;i++) str1="0"+str1; } else { for(int i=1;i<=len1-len2;i++) str2="0"+str2; } len1=str1.length(); int cf=0; int temp; for(int i=len1-1;i>=0;i--) { temp=str1[i]-'0'+str2[i]-'0'+cf; cf=temp/10; temp%=10; str=char(temp+'0')+str; } if(cf!=0) str=char(cf+'0')+str; return str;}int main(){ int T; scanf("%d",&T); while(T--) { string sum="0"; string str1; while(cin>>str1) { if(str1=="0")break; sum=add(sum,str1); } cout<<sum<<endl; if(T>0)cout<<endl; } return 0;}
阅读全文
0 0
- hdoj1047 Integer Inquiry(大整数的相加)
- POJ 1503 Integer Inquiry 美丽的大整数相加 + 测试数据
- hdu 1047 Integer Inquiry(大整数求和)
- java 大整数运算Integer Inquiry HDU
- Integer Inquiry 大数相加
- Integer Inquiry(大数相加)
- Integer Inquiry 大数相加
- uva 424(Integer Inquiry)高精度大整数加法
- 九度OJ 1119:Integer Inquiry(整数相加) (大数运算)
- HDOJ1047大数相加
- 两个大的整数相加
- POJ 1503 Integer Inquiry【大数相加 java】
- PKU-1503 Integer Inquiry(模拟大数相加)
- zoj_1292 Integer Inquiry(大数相加)
- POJ 1503 Integer Inquiry(大数相加)
- HDU-1047 Integer Inquiry 大数相加
- hdu1047 Integer Inquiry 多次大数相加
- HDU ACM 1047 Integer Inquiry->大数相加
- UVa 11572 Unique Snowflakes——思路题
- Java文件操作
- abap 函数弹出磁盘文件选择界面
- 关于Android studio 导入速度慢的问题(说的就是你gradle)
- WEB安全-伪造X-Forwarded-For绕过服务器IP地址过滤
- hdoj1047 Integer Inquiry(大整数的相加)
- golang日記
- Sword框架解析——知识采集流程页面初始化
- 台湾大学林轩田机器学习基石课程学习笔记15 -- Validation
- HashSet的去重问题
- Socket编程
- Android ROM的制作与烧录
- 石子合并(NOI1995)
- win7 下tensorflow安装