【USACO】奶牛式乘法
时间限制: 1 Sec 内存限制: 16 MB提交: 780 解决: 632
[ 提交][ 状态][ 讨论版]
题目描述
做厌了乘法计算题的贝茜,自创了一种新的乘法运算法则。在这套法则里,A*B等于一个取自A、一个取自B的所有数字对的乘积的和。比方说,123*45等于1*4 + 1*5 + 2*4 + 2*5 + 3*4 + 3*5 = 54。对于2个给定的数A、B (1 <= A, B <= 长整型最大数),你的任务是,用新的乘法法则计算A*B的值。
输入
2个用空格隔开的整数:A、B
输出
输出1个整数,即新的乘法法则下A*B的值
样例输入
123 45
样例输出
54
提示
来源
var a,b:array[1..20] of longint;
alen,blen,m,n,i,j,x:longint;
begin
readln(m,n);
alen:=0; blen:=0;
while m>0 do
begin
inc(alen);
a[alen]:=m mod 10;
m:=m div 10;
end;
while n>0 do
begin
inc(blen);
b[blen]:=n mod 10;
n:=n div 10;
end;
for i:=1 to alen do
for j:=1 to blen do
x:=x+a[i]*b[j];
writeln(x);
end.
alen,blen,m,n,i,j,x:longint;
begin
readln(m,n);
alen:=0; blen:=0;
while m>0 do
begin
inc(alen);
a[alen]:=m mod 10;
m:=m div 10;
end;
while n>0 do
begin
inc(blen);
b[blen]:=n mod 10;
n:=n div 10;
end;
for i:=1 to alen do
for j:=1 to blen do
x:=x+a[i]*b[j];
writeln(x);
end.
方法二:(巧用数学)
var a,b:longint;
function sum(a:longint):longint;
begin
if a< 10 then exit(a);
exit(sum(a div 10)+a mod 10);
end;
begin
readln(a,b);
writeln(sum(a)*sum(b));
end.
function sum(a:longint):longint;
begin
if a< 10 then exit(a);
exit(sum(a div 10)+a mod 10);
end;
begin
readln(a,b);
writeln(sum(a)*sum(b));
end.