题目1083:特殊乘法
2013-07-29 20:19
267 查看
题目描述:
写个算法,对2个小于1000000000的输入,求结果。
特殊乘法举例:123 * 45 = 1*4 +1*5 +2*4 +2*5 +3*4+3*5
输入:
两个小于1000000000的数
输出:
输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。
样例输入:
样例输出:
代码:
另一种解法:
#include <stdio.h>
int main() {
char a[11], b[11];
int i,j;
while(scanf("%s %s",a,b)!=EOF) {
int ans = 0;
for(i=0;a[i]!=0;i++)
for(j=0;b[j]!=0;j++)
ans += (a[i] - '0') * (b[j] - '0');
printf("%d\n",ans);
}
return 0;
}
用了一个技巧,把输入作为字符串。 数字字符 - '0'就可以变为数字。
写个算法,对2个小于1000000000的输入,求结果。
特殊乘法举例:123 * 45 = 1*4 +1*5 +2*4 +2*5 +3*4+3*5
输入:
两个小于1000000000的数
输出:
输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。
样例输入:
123 45
样例输出:
54
代码:
#include <stdio.h> int main() { int m,n,i,j; while(scanf("%d %d",&m,&n)!=EOF) { int sum = 0; int x,y; while(m > 9) { x = m % 10; m /= 10; int tmp = n; while(tmp > 9) { y = tmp % 10; tmp /= 10; sum += x * y; } sum += x * tmp; } while(n > 9) { y = n % 10; n /= 10; sum += m * y; } sum += m * n; printf("%d\n",sum); } return 0; }
另一种解法:
#include <stdio.h>
int main() {
char a[11], b[11];
int i,j;
while(scanf("%s %s",a,b)!=EOF) {
int ans = 0;
for(i=0;a[i]!=0;i++)
for(j=0;b[j]!=0;j++)
ans += (a[i] - '0') * (b[j] - '0');
printf("%d\n",ans);
}
return 0;
}
用了一个技巧,把输入作为字符串。 数字字符 - '0'就可以变为数字。
相关文章推荐
- 39-题目1083:特殊乘法
- 九度OJ题目1083:特殊乘法
- 题目1083:特殊乘法(求模运算符的使用)
- 题目1083:特殊乘法
- 九度OnlineJudge题目1083:特殊乘法
- 【九度OJ】题目1083:特殊乘法 解题报告
- 题目1083:特殊乘法
- 题目1083:特殊乘法
- 题目1083:特殊乘法
- 九度 Online Judge 算法 刷题 题目1083:特殊乘法
- 题目1083:特殊乘法[数位拆解]
- 九度 题目1083:特殊乘法
- 题目1083:特殊乘法
- 九度题目1083特殊乘法
- 九度OJ 题目1083:特殊乘法
- 九度OJ 题目1083:特殊乘法
- 题目1083:特殊乘法
- 九度题目:特殊乘法(1083)
- 题目1083:特殊乘法(2010年清华大学计算机研究生机试真题)
- 题目1083:特殊乘法