時間限制:1 秒
內存限制:32 兆
特殊判題:否
- 題目描述:
-
寫個算法,對2個小於1000000000的輸入,求結果。
特殊乘法舉例:123 * 45 = 1*4 +1*5 +2*4 +2*5 +3*4+3*5
- 輸入:
-
兩個小於1000000000的數
- 輸出:
-
輸入可能有多組數據,對於每一組數據,輸出Input中的兩個數按照題目要求的方法進行運算後得到的結果。
- 樣例輸入:
-
123 45
- 樣例輸出:
-
54
- 來源:
- 2010年清華大學計算機研究生機試真題
- 方法一:
#include <stdio.h> #include <string.h> int main(){ char a[11],b[11]; //保存輸入的兩個整數 while(scanf("%s %s",a,b)!=EOF){ int ans=0; //累加變量 for(int i=0;a[i]!=0;i++) //遍歷a中每一個字符,直到a字符串結尾 for(int j=0;b[j]!=0;j++) //遍歷b中每一個字符,直到b字符串結尾 ans += (a[i]-'0')*(b[j]-'0'); //計算a,b中每一個字符所代表的數字兩兩乘積的和 printf("%d\n",ans); //輸出答案 } return 0; } /************************************************************** Problem: 1083 User: zpy Language: C++ Result: Accepted Time:0 ms Memory:1020 kb ****************************************************************/
方法二:#include <stdio.h> #include <math.h> int main(){ int a,b; //保存兩個整數的變量 while(scanf("%d %d",&a,&b)==2){ //輸入兩個整數 int m=a%10,n=b%10; for(int i=2;i<=9;i++){ int t=pow(10,i-1); m += (a/t)%10; //m爲a的各個位的數之和 n += (b/t)%10; //n爲b的各個位的數之和 } printf("%d\n",m*n); //輸出結果 } return 0; } /************************************************************** Problem: 1083 User: zpy Language: C++ Result: Accepted Time:0 ms Memory:1108 kb ****************************************************************/