Advertisement
Infernale

Digit

Oct 30th, 2018
474
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.00 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. int FindKToN(int n, int k){
  4.     int oNum = n;
  5.     int power = 1;
  6.     int i = 0;
  7.     int counter = 0;      
  8.     while (n > 0){
  9.         int d = n % 10;
  10.         n /= 10;
  11.         counter += d * (power * i) / 10;
  12.         if(d > k){
  13.             counter += power;
  14.         }else if(d == k){
  15.             counter += oNum % power + 1;
  16.         }
  17.         power *= 10;
  18.         i++;
  19.     }
  20.     return counter;
  21. }
  22.  
  23. int findZero(int n){
  24.     int res = 0, i = 1;
  25.     while(1){
  26.         int b = n/i;
  27.         int c = n%i;
  28.         int a = b/10;
  29.         b = b%10;
  30.         if(a==0){
  31.             return res;
  32.         }
  33.         if(b==0){
  34.             res+=(a-1)*i+c+1;
  35.         }else{
  36.             res+=a*i;
  37.         }
  38.         i*=10;
  39.     }
  40. }
  41.  
  42. int main(){
  43.     int tc,range;
  44.     scanf("%d",&tc);
  45.     for(int i=1;i<=tc;i++){
  46.         int num;
  47.         scanf("%d",&num);
  48.         printf("Case #%d: ",i);
  49.         printf("%d %d %d %d %d %d %d %d %d %d\n",findZero(num),FindKToN(num,1),FindKToN(num,2),FindKToN(num,3),FindKToN(num,4),FindKToN(num,5),FindKToN(num,6),FindKToN(num,7),FindKToN(num,8),FindKToN(num,9));
  50.     }
  51.     return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement