PKU 3720 Occurrence of Digits
http://poj.org/problem?id=3720
1/nを小数表示したとき、(循環部分は1回だけ書く)1/2,1/3,1/4,・・・,1/nの中にkとなる桁はいくつあるかを求めろというような問題。
筆算するだけ。
だけといいながら、デバッグ時のままのプログラムをサブミットしてしまって1WAをもらいました。
vector<int>dig[200]; void divi(int n){ vector<int>& pp=dig[n]; int di=1; set<int>app; while(true){ if(di==0 || app.count(di))break; app.insert(di); di*=10; pp.pb(di/n); di-=di/n*n; } } main(){ for(int i=2;i<=100;++i) divi(i); int n,k; while(cin>>n>>k){ int ans=0; for(int i=2;i<=n;++i){ FOR(iter,dig[i])ans+=*iter==k; } cout<<ans<<endl; } }