湖南师大acm10015
来源:互联网 发布:海通大智慧软件下载 编辑:程序博客网 时间:2024/03/29 20:24
湖南师大ACM报告:大数相乘问题;http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=10015&courseid=0
一开始感觉这道题目很简单,只要模拟乘法运算就可以了,但是后来在写代码的时候粗心放了一个大错误,改了半个小时才改过来!!总体上而言还是很有收获!
下面的AC的C++代码:#include<iostream>#include<string>using namespace std;const int M=101;int a[M],b[M],c[M],d[M*M];void SUM(int k,int i){ int j,t=0,s; for(j = i,s = 0;s <= k;j++,s++)//把结果错位相加; { t = t + c[s] + d[j]; d[j] = t%10; t = t/10; } while(d[j + 1] + t>9) { d[j + 1] = (d[j + 1] + t)%10; t = (d[j + 1] + t)/10; j++; }}int main(){ string sa,sb; int la,lb,i,j,t,k; while(cin>>sa>>sb) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(d,0,sizeof(d)); la = sa.length(); lb = sb.length(); for(i = la-1,j = 0;i >= 0;i--,j++) a[j] = sa[i] - '0'; for(i = lb-1,j = 0;i >= 0;i--,j++) b[j] = sb[i]-'0'; for(i = 0;i < la;i++) { memset(c,0,sizeof(c)); k = t = 0; for(j = 0;j < lb;j++)//存储a的每一位数与b相乘的结果; { t = a[i] * b[j] + t; c[k++] = t % 10; t = t / 10; } c[k] = t; SUM(k,i); } for(i=M*M-1;i>=0;i--) if(d[i])//因为是从低位存储低位数,所以从后面开始输出; break; for(j=i;j>=0;j--) cout<<d[j]; cout<<endl; } return 0;}
- 湖南师大acm10015
- 湖南师大acm problem 10384 计算点到线段之间的距离
- 再见师大
- 湖南妹类细急
- 湖南男孩子
- 湖南卫视
- 啊实打实大师大安师大安师大安师大爱上
- 华师大图书馆!
- 华师大之行
- 华师大上课回来
- 情系师大
- 与师大学生交流
- 首都师大 个人
- 软件设计考试师大纲
- 回忆 08省赛 师大
- 系统架构师大会
- sasa好看哈师大
- 曲师大校友
- 《足球与互联网产品》2:从欧洲杯感悟联网产品团队
- maven快速入门
- POJ1702Eva's Balance
- 多线程的条件变量
- 敏捷开发“松结对编程”实践之五:代码检查篇(大型研发团队,学习型团队,139团队,师徒制度,代码审查)
- 湖南师大acm10015
- android 动画笔记
- ZOJ 1002
- Android 框架简介
- 湖南师大acm problem 10384 计算点到线段之间的距离
- POSIX的线程的取消点(Cancellation Point)的概念和实现方式
- google各国域名
- 黑马程序员-TCP传输数据
- u880刷2.3.7