一道简单的算法练习题试水下

来源:互联网 发布:蹲坐两用马桶淘宝 编辑:程序博客网 时间:2024/04/28 06:35

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+" ");}@Testpublic void test(){NuberCou(998);}}


原创粉丝点击