Repeating Decimals UVA - 202
阿新 • • 發佈:2018-11-06
覺得這道題主要還是理解停止條件是什麼,用兩個陣列分別儲存除數和餘數,當出現一組除數和餘數存在於陣列當中時就出現了迴圈
#include <iostream> #include <vector> using namespace std; int main() { int a, b, flag = 0, length = 0, start = 0; // length不計入0號單元 vector<int> v1, v2; int m, n; while (cin >> a >> b) { v1.push_back(a/b); v2.push_back(a%b); v1.push_back(v2[0]*10/b); v2.push_back(v2[0]*10%b); length = 1; while (1) { m = v2[length]*10/b; n = v2[length]*10%b; length++; for (int i = 1; i < length; i++) if (m == v1[i] && n == v2[i]) { flag = 1; start = i; break; } if (flag) break; v1.push_back(m); v2.push_back(n); } printf("%d/%d = %d.", a, b, v1[0]); for (int i = 1; i < length; i++) { if (start == i) putchar('('); if (i > 50) { printf("..."); break; } cout << v1[i]; } cout << ')' << endl; printf(" %d = number of digits in repeating cycle\n\n", length - start); flag = 0, length = 0, start = 0; v1.clear(); v2.clear(); } return 0; }