解題心得
照著題目敘述做就好。
程式碼
#include <iostream> #include <string> #include <vector> using namespace std; int descending(int n) { int arr[10] = { 0 }, ans = 0; while (n) { arr[n % 10]++; n /= 10; } for (int i = 9; i >= 0; i--) { while (arr[i] != 0) { ans = ans * 10 + i; arr[i]--; } } return ans; } int ascending(int n) { int arr[10] = { 0 }, ans = 0; while (n) { arr[n % 10]++; n /= 10; } for (int i = 0; i < 10; i++) { while (arr[i] != 0) { ans = ans * 10 + i; arr[i]--; } } return ans; } int main() { int n; while (cin >> n && n) { vector<int> v; cout << "Original number was " << n << endl; while (true) { int ascend = ascending(n), descend = descending(n), result = descend - ascend; cout << descend << " - " << ascend << " = " << result << endl; if (v.size() != 0 && find(v.begin(), v.end(), result) != v.end()) break; v.push_back(result); n = result; } cout << "Chain length " << v.size() + 1 << endl << endl; } return 0; }
沒有留言:
張貼留言