第一步:
想說要用整數還是用陣列去算,題目有提到數字最多10位數,所以最多幾十億,開long long解決。
第二步:
利用迴圈跟計數算出題目給的數字是幾位數。
第三步:
利用%限制兩個數字的位數並相加,如有進位,記錄一次。
- /****************************************
- Uva 10035 - Primary Arithmetic
- Aurhor: CHEN YU YUAN
- Language: C++
- ****************************************/
- #include <iostream>
- using namespace std;
- //計算位數
- int digits(unsigned long long d)
- {
- int len = 0;
- while (d >= 1)
- {
- d /= 10;
- len++;
- }
- return len;
- }
- int main()
- {
- unsigned long long num1, num2;
- while (cin >> num1 >> num2 )
- {
- if (num1 == 0 && num2 ==0)
- break;
- //取位數大的
- int digit1, digit2,max;
- digit1 = digits(num1);
- digit2 = digits(num2);
- max = (digit1 > digit2) ? digit1 : digit2;
- //計算進位
- int devbase = 10, counter = 0;
- for (int i=0; i<max; i++)
- {
- //從個位數開始相加,如果大於等於基數10的倍數,表示有進位
- if ((num1 % devbase + num2 % devbase) >= devbase)
- counter++;
- devbase *= 10;
- }
- //output
- if (counter == 0)
- cout << "No carry operation." << endl;
- else if (counter == 1)
- cout << counter << " carry operation." << endl;
- else
- cout << counter << " carry operations." << endl;
- }
- }
沒有留言:
張貼留言