0113 - Period
#include <algorithm> #include <iostream> #include <map> #include <string> #include <vector> using namespace std; void Slove(int p, int q) { int index=-1; vector<int> vec; map<int,int> remain; remain[p%q]=0; p*=10; for (int i=0; i<80; ++i) { vec.push_back(p/q); if ( !(p%q) ) break; else if ( remain.find(p%q) != remain.end() ) { index=remain[p%q]; break; } remain[p%q]=i+1; p=p%q*10; } for (int i=0; i<vec.size(); ++i) cout << vec[i]; cout << endl; if (index != -1) { for (int i=0; i<vec.size(); ++i) cout << (i<index? " " : "^"); cout << endl; } } int main(void) { int p, q; while (cin >> p >> q) Slove(p,q); return 0; }
やるだけ問題。