A × B problem
来源:互联网 发布:知乎打下榆林城耻辱 编辑:程序博客网 时间:2024/06/15 02:52
描述
Redraiment碰到了一个难题,需要请你来帮忙:给你两个整数,请你计算A × B。
输入
数据的第一行是整数T(1 ≤ T ≤ 20),代表测试数据的组数。
接着有T组数据,每组数据只有一行,包括两个非负整数A和B。
但A和B非常大,Redraiment能保证这些数用long来保存一定会溢出。
但A和B的位数最大不会超过100位。
输出
对应每组测试数据,你都要输出两行:
第一行为:"Case #:", # 代表这是第几组测试数据。
第二行是一个等式:"A * B = Sum", Sum 代表 A × B 的结果。
你要注意这个等式里包含了几个空格。
要求每组数据之间都需要保留一个空行。
样例输入
2
1 2
123456789 987654321
1 2
123456789 987654321
样例输出
Case 1:
1 * 2 = 2
Case 2:
123456789 * 987654321 = 121932631112635269
1 * 2 = 2
Case 2:
123456789 * 987654321 = 121932631112635269
提示
Case后有一个空格
冒号(:)后没有空格
乘号(*)两端各有一个空格
等号(=)两端各有一个空格
#include <stdio.h>#include <string.h> int main(){ char a[101],b[101]; int i,j,k,cas,count=1,num2,num3; scanf("%d",&cas); getchar(); while(cas--) { int c[100000]={0}; scanf("%s %s",a,b); num2=strlen(a); num3=strlen(b); getchar(); if(strcmp(a,"0")==0||strcmp(b,"0")==0) { printf("Case %d:\n",count); printf("%s * %s = 0\n",a,b); count++; } else { for(i=0;i<num2;i++) {for(j=0;j<num3;j++) {c[i+j]+=(a[num2-i-1]-'0')*(b[num3-j-1]-'0'); k=i+j; while(c[k]>=10) {c[k+1]+=c[k]/10;c[k]%=10;k++;} } } i=9999;num2=i; while(c[i]==0) { i--;num2 = i; } printf("Case %d:\n",count); count++; printf("%s * %s = ",a,b); for(i=num2;i>=0;i--) {printf("%d",c[i]);} printf("\n");} if(cas>=1) {printf("\n");}}return 0;}
- problem 1000: A+B problem
- Problem 1000 A+B Problem
- Problem - 1000 A + B Problem
- A + B Problem
- A + B Problem
- 1000 A+B Problem
- 1001 A + B Problem
- A+B Problem
- 1000 A+B Problem
- A + B Problem
- A + B Problem
- 1000 A + B Problem
- 1000 A+B Problem
- A + B Problem
- A + B Problem II
- A + B Problem II
- POJ1001 -- A-B Problem
- A + B problem II
- 有人找你一夜晴,你会怎么办?
- android中Touch事件的处理逻辑
- [C/C++]_[使用libiconv库转换字符编码]
- 广州传智播客PHP培训课程由业界顶级讲师带队!
- OpenCV-Python教程(5、初级滤波内容)
- A × B problem
- 广州.Net培训课程哪里好,非传智播客莫属了
- 广州学Java哪里好?当然是传智播客了!
- 1081Above Average
- C++类中的static数据成员,static成员函数
- 房贷计算说明
- 见与不见
- Boost::asio io_service 实现分析
- 易语言- 调用API两种方法移动鼠标 SetCursorPos mouse_event