t算法设计与分析题第一题-统计数字问题不知道 是否正确,求验证!
一本书的页码从自然数1开始顺序编码到自然数n.书的页码按照通常习惯编排,每个页码都不含多余的前导数字0.例如第六页用6表示,而不是06类等,数字统计问题要求对给定书的总页码n,计算机出书全部页码分别用到多少次数字0,1,2………………9
public class Nubercount {//就这一看似简单的问题,却费了我这么长的时间,
int a[]=new int [10];
int tempcount=1;//位权
int cc=0;
public void NuberCou(int n){
int m=n;
int j=0,temp;
int k=10;
String str=String.valueOf(n);
int total=str.length();
int i=total-1;
int t=total;
int[] b=new int[t];
int a[]=new int[10];
for(;m>0;i--){
b[i]=m%10;
m/=10;
}
m=n;
for(int c:b)
System.out.print(c+" ");
System.out.println();
while(t!=0){
int tt=t-1;
for(i=(t<total && t>1?0:1);i<b[j];i++) //统计最高t位
a[i]+=Math.pow(10, t-1);
temp=b[j];
while(tt-->0){
temp=temp*(int)Math.pow(10, tt);
for(i=0;i<10 ;i++)//统计t-1到末位的数
a[i]+=temp;
}
System.out.println(m%(int)Math.pow(10, t-1));
a[b[j]]+=m%Math.pow(10, t-1)+t>1?1:0;//统计高位最后一个数
if(m%10!=0 && t==1) a[b[j]]+=1;
j++;
t--;
}
for(int s:a)
System.out.print(s+" ");
}
@Test
public void test(){
NuberCou(998);
}
}