Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.StringTokenizer;
- public class digits {
- public static void main(String[] args) throws IOException {
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- StringTokenizer st; String s;
- int A, B;
- int[] fA, fB;
- while(!(s=br.readLine()).equals("0 0")){
- st = new StringTokenizer(s);
- A = Integer.parseInt(st.nextToken());
- B = Integer.parseInt(st.nextToken());
- fA = new int[10];
- fB = new int[10];
- for (int i = 0; i < 10; i++) {
- fA[i] = contar(A-1, i);
- fB[i] = contar(B, i);
- System.out.print(fB[i] - fA[i]);
- if(i < 9) System.out.print(" ");
- }
- System.out.println();
- }
- }
- static public int contar(int N, int d){
- if(N < 0) return 0;
- if(N < 10) return d <= N ? 1 : 0;
- int L = (N+"").length();
- int aLm1 = Integer.parseInt((N+"").substring(0,1));
- int diezLm1 = 1;
- int diezLm2 = 1;
- for (int i = 0; i < L-2; i++) {
- diezLm2 = diezLm2*10;
- }
- for (int i = 0; i < L-1; i++) {
- diezLm1 = diezLm1*10;
- }
- if(d != 0){
- return contar(N%diezLm1, d) + aLm1*diezLm2*(L-1) + (d<aLm1 ? diezLm1 : 0) + (d==aLm1 ? N%diezLm1 + 1 : 0);
- }
- else{
- System.out.println(N+":");
- System.out.println(contar(N%diezLm1, d));
- System.out.println((L-1-largo(N%diezLm1))*(N%diezLm1));
- System.out.println((aLm1-1)*diezLm2*(L-1));
- System.out.println(b(L-1));
- System.out.println();
- return contar(N%diezLm1, d) +fix(L-1) +(L-1-largo(N%diezLm1))*(N%diezLm1) + (aLm1-1)*diezLm2*(L-1) + b(L-1);
- }
- }
- static public int largo(int n){
- if(n == 0) return 0;
- return (n+"").length();
- }
- static public int b(int n){
- if(n == 1) return 1;
- int diezNm2 = 1;
- for (int i = 0; i < n-2; i++) {
- diezNm2 = 10*diezNm2;
- }
- return 9*(n-1)*diezNm2 + b(n-1);
- }
- static public int fix(int L){
- if(L == 0) return 1;
- String chant = "";
- for (int i = 0; i < L; i++) {
- chant = chant+"1";
- }
- return 9*Integer.parseInt(chant);
- }
- }
Add Comment
Please, Sign In to add comment