问题 C: 特殊乘法
[命题人 : 外部导入]
时间限制 : 1.000 sec 内存限制 : 32 MB
题目描述
写个算法,对2个小于1000000000的输入,求结果。特殊乘法举例:123 * 45 = 14 +15 +24 +25 +34+35
输入
两个小于1000000000的数
输出
输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。
样例输入 Copy
24 65
42 66666
3 67
样例输出 Copy
66
180
39
#include<stdio.h>
int main() {
//样例的输入输出是对的,可能没考虑到其他因素,明天改吧 ,已改,第二块
long long int n1,n2;
int res1[20],res2[20];
int max1,max2;//sum=0;应该在函数内,咋不长记性呢 bao******
while(scanf("%ld%ld",&n1,&n2)!=EOF){
int sum=0;
for(int i=0;n1>0;i++){
res1[i]=n1%10;
n1/=10;
max1=i;
}
for(int i=0;n2>0;i++){
res2[i]=n2%10;
n2/=10;
max2=i;
}
for(int i=0;i<max1+1;i++){//max1+1,而不是max1
for(int j=0;j<max2+1;j++){
sum+=res1[i]*res2[j];
}
}
printf("%d\n",sum);
}
return 0;
}
```csharp
#include<stdio.h>
int main() {
long long int n1,n2;
// int res1[20],res2[20];没赋初值,如果n1/n2=0时,有错误
int max1,max2;//sum=0;应该在函数内,咋不长记性呢 bao******
// while(scanf("%ld%ld",&n1,&n2)!=EOF){
while(scanf("%lld%lld",&n1,&n2)!=EOF){
int sum=0;
int res1[200]={0},res2[200]={0};//开始用的20,运行错误**********************
for(int i=0;n1>0;i++){
res1[i]=n1%10;
n1/=10;
max1=i+1;
}
for(int i=0;n2>0;i++){
res2[i]=n2%10;
n2/=10;
max2=i+1;
}
for(int i=0;i<max1;i++){//max1+1,而不是max1
for(int j=0;j<max2;j++){
sum+=res1[i]*res2[j];
}
}
printf("%d\n",sum);
}
return 0;
}