題目敘述
請實作一程式,此程式可以不斷地要求使用者輸入一個正整數(<=2,147,483,647),直到輸入的值小於等於0時結束程式。當輸入一正整數N後,請將此數字N做一次Divide&Subtraction動作。 Divide&Subtraction動作詳細如下所示: 假設要做Divide&Subtraction動作的正整數為n個0~9的數字所組合而成,即In …I2I1,請將此數字的奇位數數字及偶位數數字分別取出組合成兩個新數字P、Q。 當n為偶數時, P= In-1 …I3I1 、Q= In …I4I2 當n為奇數時, P= In …I3I1 、Q= In-1 …I4I2 接下來請將P-Q的算式寫出,令S=P-Q,若S>=10,則請繼續將S再做一次Divide&Subtraction,如此重複運算,直到最後得到的S小於10為止。
答題思路
略
參考答案
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include <iostream>
#include <cmath>
using namespace std;
int div_sub(int n) {
int p = 0, q = 0;
for(int i=0; n != 0; i++, n /= 100) {
p += (n % 10) * pow(10, i);
q += (n / 10 % 10) * pow(10, i);
}
printf("%d-%d=%dn", p, q, p-q);
return p-q;
}
int main() {
int n;
while(cin >> n and n > 0) {
while((n = div_sub(n)) >= 10);
}
return 0;
}
|