-
Bessie is tired of multiplying pairs of numbers the usual way, so she invented her own style of multiplication. In her style, A*B is equal to the sum of all possible pairwise products between the digits of A and B. For example, the product 123*45 is equal to 1*4 + 1*5 + 2*4 + 2*5 + 3*4 + 3*5 = 54. Given two integers A and B (1 ≤ A, B ≤ 1,000,000,000), determine A*B in Bessie's style of multiplication.
-
输入
-
The first Line of the input is a positive integer T,indicates the number of the test cases;
In every case,the input is in one line,contains two positive interger A,B
输出
- For every case,output the multiplication in Bessie's style. 样例输入
-
1 123 45
样例输出
-
54
这是一道比较简单的题目,解法很多,这里写出两种。第一种是把输入的两个数分离,存入两个数组中。再利用循环让两个数组中的数分别相乘,得出结果。代码如下:
#include<stdio.h>
int main()
{
int n,k1,k2,i,j;
int a,b,sum,a1[10],b1[10];
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&a,&b);
i = j = sum = 0;
while(a)
{
a1[i] = a % 10;
a = a/ 10;
i++;
}k1 = i;
while(b)
{
b1[j] = b % 10;
b = b/ 10;
j++;
}k2 = j;
for(i = 0;i < k1;i++)
{
for(j = 0;j < k2;j++)
{
sum = sum + a1[i] * b1[j];
}
}
printf("%d\n",sum);
}
return 0;
}
另一种是输入两个数后,分别拆开,然后求各个位数相加之和。最后两个和再相乘。
代码如下:
#include<stdio.h>
int main()
{
int n,a,b,a1,b1,k1,k2;
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&a,&b);
a1 = b1 = 0;
while(a)
{
k1 = a % 10;
a = a / 10;
a1 = a1 + k1;
}
while(b)
{
k2 = b % 10;
b = b / 10;
b1 = b1 + k2;
}
printf("%d\n",a1*b1);
}
return 0;
}
-
The first Line of the input is a positive integer T,indicates the number of the test cases;
描述
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=121