题目描述
写个算法,对2个小于1000000000的输入,求结果。特殊乘法举例:123 * 45 = 14 +15 +24 +25 +34+35
输入
两个小于1000000000的数
输出
输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。
样例输入
24 65
42 66666
3 67
样例输出
66
180
39
codes
#include <cstdio>
#include <string.h>
void input(int a,int s[])
{
int i=0;
while((a/10)!=0)
{
s[i]=a%10;
i++;
a=a/10;
}
s[i]=a%10;
}
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
int A[10]={0},B[10]={0};
input(a,A);
input(b,B);
int sum=0;
for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
{
sum = sum+A[i]*B[j];
}
}
printf("%d\n",sum);
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
}
return 0;
}
然而我在另一篇博客上看到了更加精彩的做法
#include <cstdio>
#include <cstring>
int main()
{
char A[10],B[10];
while(scanf("%s %s",A,B)!=EOF)
{
int sum=0;
for(int i=0;i<strlen(A);i++)
for(int j=0;j<strlen(B);j++)
sum+=(A[i]-'0')*(B[j]-'0');
printf("%d\n",sum);
memset(A,'\0',sizeof(A));
memset(B,'\0',sizeof(B));
}
return 0;
}