难度:简单
题目描述
写个算法,对2个小于1000000000的输入,求结果。特殊乘法举例: 123 ∗ 45 = 1 ∗ 4 + 1 ∗ 5 + 2 ∗ 4 + 2 ∗ 5 + 3 ∗ 4 + 3 ∗ 5 123 * 45 = 1*4 +1*5 +2*4 +2*5 +3*4+3*5 123∗45=1∗4+1∗5+2∗4+2∗5+3∗4+3∗5
输入
两个小于1000000000的数
输出
输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。
样例输入
24 65
42 66666
3 67
样例输出
66
180
39
思路
字符串存储数字
代码
- C语言实现
#include<stdio.h>
int main()
{
char a[12], b[12];
while (scanf("%s%s", a, b) != EOF) {
int sum=0;
for (int i = 0; a[i]; i++)
{
for (int j = 0; b[j]; j++) {
sum += (a[i] - '0') * (b[j] - '0');
}
}
printf("%d\n",sum);
}
return 0;
}
- 另一种写法—笛卡尔积的运算(来源于网上) pyhon实现
这是笛卡尔积的运算,在python中天然支持,在itertools包中有product方法。
代码如下:
from itertools import product
while True:
try:
a, b = input().split()
res = 0
for i in product(map(int, list(a)), map(int, list(b))):
res += i[0] * i[1]
print(res)
except:
break