OJ 大数的乘法
来源:互联网 发布:黑客帝国矩阵革命在线 编辑:程序博客网 时间:2024/04/30 01:22
2326: 大数的乘法【数组】
Description
大数是指计算的数值非常大或者对运算的精度要求非常高,用已知的数据类型无法精确表示的数值。例如:我们要计算如下两个数的乘积时,用我们已知的数据类型是无法精确表示其结果的:
a1 = 11111111111111111111111111111111111
b1 = 11111111111111111111111111111111111111
求:a1 * b1;
Input
输入两行:每行一个数字,每行的数字不超过100位;
Output
输出一行:为这两个大数的乘积
Sample Input
1111111111111111111111111111111111
Sample Output
123456790123456666654320987654321
#include<stdio.h>
#include<string.h>
int main()
{ freopen("fff.txt","r",stdin);
char a[100],b[100];
int k,p=-1,i,l,n,j,m;
int c[10000]={0};
int s;
gets(a);
gets(b);
n=strlen(a);
l=strlen(b);
for(i=n-1;i>=0;i--)
{ p++;
k=p;
for(j=l-1;j>=0;j--)
{
s=((int)a[i]-48)*((int)b[j]-48);
if(s<10)
{ if(c[k]+s<10)
c[k]+=s;
else
{
c[k]=c[k]+s-10;
c[k+1]+=1;
m=k;
while(c[m+1]>=10)
{
c[m+1]=0;
c[m+2]+=1;
m++;
}
}
}
else
{ c[k]=c[k]+s-((c[k]+s)/10)*10;
if(c[k+1]+(c[k]+s)/10<10)
c[k+1]+=(c[k]+s)/10;
else
{
c[k+1]=c[k+1]+(c[k]+s)/10-10;
m=k;
c[m+2]+=1;
while(c[m+2]>=10)
{
c[m+2]=0;
c[m+3]+=1;
m++;
}
}
}
k++;
}
}
for(i=k-1;i>=0;i--)
printf("%d",c[i]);
return 0;
}
- OJ 大数的乘法
- 九度OJ 1076 N的阶乘 大数乘法
- 九度oj 1076 大数乘法
- 大数乘法的实现
- 大数的乘法
- 1027 大数的乘法
- 大数乘法的实现
- 大数乘法的实现
- 大数的乘法
- 大数的乘法
- 大数的乘法
- 大数的乘法
- 两位数的大数乘法
- 大数的乘法
- 大数的乘法
- 大数的乘法
- 九度OJ 1076 N的阶乘 (高精度大数的乘法)
- C语言大数乘法求1000的阶乘(九度OJ 1076)
- 指纹解锁(系统类)__真机
- 修改Tomcat Connector运行模式,优化Tomcat运行性能
- android高级技术之相机的前后摄像头切换
- C++climits中的符号常量
- MD5
- OJ 大数的乘法
- Android UI开发之Action Bar
- Fragment(碎片)实用案例
- [Python]Python pip用国内镜像下载的办法
- C++文件操作
- Crf模型
- iOS之Cell工厂解决多种cell的困扰
- NetMQ 测试用例
- Linux安装Mysql - 解决Access denied for user ''@'localhost' to database 'mysql'问题