当前位置: 代码迷 >> 综合 >> 洛谷——A*B Problem
  详细解决方案

洛谷——A*B Problem

热度:9   发布时间:2024-02-24 12:36:53.0

题目描述

求两数的积。

输入格式

两行,两个整数。

输出格式

一行一个整数表示乘积。

输入输出样例

输入 #1

1 
2

输出 #1

2

说明/提示

每个数字不超过 10200010^{2000}102000 ,需用高精。

注意:结果为0的情况

#include<stdio.h>
#include<string.h>
int main()
{char s1[10000];char s2[10000];int ss1[10000];int ss2[10000];int sum[20000];int i,j,k,m,n;scanf("%s%s",s1,s2);	//输入两个字符串 int len1=strlen(s1);int len2=strlen(s2);
//	printf("%s\n%s\n",s1,s2);	//检验输入是否正确 for(i=0;i<len1;i++)ss1[i]=s1[len1-i-1]-48;//将第一个字符串转化为数组,且逆序 for(i=0;i<len2;i++)ss2[i]=s2[len2-i-1]-48;//将第二个字符串转化为数组,且逆序 //	for(i=0;i<len1;i++)
//		printf("%d",ss1[i]);
//	printf("\n");
//	for(i=0;i<len2;i++)
//		printf("%d",ss2[i]);
//	printf("\n");for(i=0;i<len1;i++)for(j=0;j<len2;j++){sum[i+j]+=ss1[i]*ss2[j];//相乘 }for(i=0;i<len1+len2-1;i++)//进位 if(sum[i]>=10){sum[i+1]+=sum[i]/10;sum[i]%=10;}k=len1+len2;while(sum[k]==0 && k>0)k--;for(i=0;i<=k;i++)printf("%d",sum[k-i]);return 0;} 

 

  相关解决方案