POJ 3720 Occurrence of Digits
問題
1/2 = .5, 1/3 = .(3), 1/4 = .25 ,...1/nと書いていったとき、
小数部分に数字kは何回現れるか求めよ。
制約条件
n≦100
k≦10
方針
出てきた数字を数えながら筆算の割り算をしていく。
割りきれたり、おなじ余りを検出したら筆算は終了。
nが小さいので毎回愚直にやってよい。
ソースコード
int n,k; int cnt[10]; bool v[101]; int main(){ while(~scanf("%d%d",&n,&k)){ rep(i,10)cnt[i]=0; for(int i=2;i<=n;i++){ memset(v,0,sizeof(v)); int mod=1; v[1]=1; while(mod){ mod*=10; int d=mod/i; mod%=i; cnt[d]++; if(v[mod])break; v[mod]=1; } } printf("%d\n",cnt[k]); } return 0; }