#include <stdio.h>
#include<string.h>
#include <algorithm>
#include<iostream>
using namespace std;
/**
语法:mult(char c[],char t[],int m);
参数:source[]:被乘数,用字符串表示,位数不限
result[]:结果,用字符串表示
m:乘数
返回值:null
注意:需要 string.h
*/
void mult(char *source,char * result,int m){
int i,j,len,temp,add=0;
char tempArr[1000];
len=strlen(source);
// 将x1x2x3...xn 转换成 xn...x3x2x1,且为数值
for(i=len-1,j=0;i>=0;i--){
tempArr[j++]=source[i]-'0';
}
for(i=0;i<len;i++){
temp = tempArr[i]*m+add;
tempArr[i]=temp%10;
add=temp/10;
}
//用来将最后的进位存入数组中
while(add){
tempArr[len++]=add%10;
add=add/10;
}
//将最后的结果换成字符整形,并将结果正序返回
for(i=0;i<len;i++){
result[len-i-1]=tempArr[i]+'0';
}
result[len]='\0';
}
int main(){
char source[500];
int m;
char result[1000];
scanf("%d%s",&m,source);
mult(source,result,m);
printf("%s\n",result);
return 0;
}
ACM内部函数--数学问题--大数乘小数
最新推荐文章于 2021-03-22 22:03:16 发布