Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //UVa Q202
- #include <bits/stdc++.h>
- using namespace std;
- #define int unsigned
- int32_t main(){
- int n,m;
- while(cin >> n >> m){
- cout << n << '/' << m << " = " << n/m << '.';
- n %= m;
- vector<int> ans;
- int rec[3001];
- for(int i = 0; i < m; ++i)rec[i] = 1e9;
- int cut = 1e9;
- int cnt = 0;
- rec[n] = 0;
- while(n != 0 && cut == 1e9){
- ++cnt;
- n *= 10;
- ans.emplace_back(n / m);
- n %= m;
- if(rec[n] != 1e9)cut = rec[n];
- rec[n] = cnt;
- }
- if(n == 0)cut = ans.size();
- for(int i = 0; i < cut; ++i)cout << ans[i];
- ///////////////////////////////////////////
- cout << '(';
- for(int i = cut; i < min(cut+50,(int)ans.size()); ++i)cout << ans[i];
- if(cut >= ans.size())cout << 0;
- if(ans.size() > cut+50)cout << "...";
- cout << ')' << '\n';
- ///////////////////////////////////////////
- int len = (n == 0)? 1 : ans.size()-cut;
- cout << " " << len << " = number of digits in repeating cycle\n\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement