1027 大数乘法
2016-06-29 17:13
253 查看
给出2个大整数A,B,计算A*B的结果。
Input
第1行:大数A 第2行:大数B (A,B的长度 <= 1000,A,B >= 0)
Output
输出A*B
Input示例
123456
234567
Output示例
28958703552
Input
第1行:大数A 第2行:大数B (A,B的长度 <= 1000,A,B >= 0)
Output
输出A*B
Input示例
123456
234567
Output示例
28958703552
#include <stdio.h> #include <stdlib.h> #include <string.h> int judge(char* a) { int i; for (i = 0; i < strlen(a); ++i) { if (a[i] != '0') return 0; } return 1; } void multiplicative(char* a, char* b) { int lena = strlen(a), lenb = strlen(b); int len = lena + lenb; int i, j; int a1[1005]={0}, b1[10005]={0}, r[10005]={0}; for (i = 0; i < lena; ++i) a1[i] = a[lena-i-1] - '0'; for (i = 0; i < lenb; ++i) b1[i] = b[lenb-i-1] - '0'; for (i = 0; i < lena; ++i) { for (j = 0; j < lenb; ++j) { r[i+j] += a1[i] * b1[j]; } } for (i = 0; i < len; ++i) { r[i+1] += r[i] / 10; r[i] = r[i] % 10; } while (!r[len-1]) len--; for (i = 0; i < len; ++i) a[i] = r[len-i-1] + '0'; if (judge(a)) strcpy(a, "0"); printf("%s", a); } int main () { char A[10005], B[10005]; int fa, fb; scanf("%s%s", A, B); multiplicative(A, B); return 0; }
相关文章推荐
- 187. Repeated DNA Sequences
- HTML5 LocalStorage 本地存储
- 关于一个Textview内的文字设置不同大小和颜色
- ROS消息过滤器 ( message_filters)
- Cookie和Session
- android--之笔记(一)
- UGUI自适应分辨率
- Hadoop中HDFS的存储机制
- 算法导论_第八章_线性时间排序
- Android项目研发之多分辨率适配
- php 无法接收post数据
- vs打开项目,创建虚拟目录,提示权限不足无法写入配置文件
- 分组求最大值,最小值 使用开窗函数经验总结
- ps -C
- springmvc整合mybatis错误:java.lang.AbstractMethodError,sqlSessionFactoryBeanName造成tomcat启动错误
- 【那些工作中学到的小技巧】打印进程名和线程名
- LeetCode - 274. H-Index
- MVC 中获取Json数据
- [Leetcode]328. Odd Even Linked List
- HDU2018--母牛的故事