N進法
- n進法の a を10進法の b に直すよう計算する
- 2進法
n<-c(2,2,2,2,2) a<-c(0,0,1,0,1) v<-c(1,cumprod(n[-L])) b<-sum(a*rev(v)) n;a;b
- 一般の場合
Nmax<-10 L<-5 n<-sample(1:Nmax,L) a<-c() for(l in 1:L){ a[l]<-sample(0:(n[l]-1),1) } v<-rev(c(1,cumprod(rev(n)[-L]))) b<-sum(a*v) n;a;b
- 検算のため網羅的に変換してみる
Nmax<-10 L<-5 n<-sample(1:Nmax,L) a<-c() for(l in 1:L){ a[l]<-sample(0:(n[l]-1),1) } v<-rev(c(1,cumprod(rev(n)[-L]))) b<-sum(a*v) n;a;b ##ここから検算用 A<-list() for(l in 1:L){ A[[l]]<-0:(n[l]-1) } table<-data.matrix(expand.grid(A)) sort(table%*%v) ##ここまで