Advertisement
IlidanBabyRage

112838.cpp

Oct 22nd, 2015
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cstdio>
  4. #include <cstdlib>
  5. #include <fstream>
  6.  
  7. using namespace std;
  8.  
  9. typedef long long int lli;
  10. typedef unsigned long long ulli;
  11.  
  12. int getDigits(int n){
  13.     if (n)
  14.         return getDigits(n / 10) + 1;
  15.     else
  16.         return 0;
  17. }
  18.  
  19. void f(){
  20.     int n, cnt, digits, k_digits, powten, tmp, i;
  21.     cin >> n;
  22.     if (n < 10){
  23.         cout << n - 1 << endl;
  24.         return;
  25.     }
  26.     digits = getDigits(n);
  27.     powten = 1;
  28.     k_digits = 0;
  29.     cnt = 0;
  30.     for (i = 1; i < digits; i++)
  31.         powten *= 10;
  32.     i = powten;
  33.     if (n % i == 0){
  34.         if (n / i == 1)
  35.             powten /= 10, digits--;
  36.         cnt++;
  37.         n--;
  38.     }
  39.     if (n / i == 1) cnt--;
  40.     while (k_digits < digits || powten != 0){
  41.         if (k_digits < digits){
  42.             cnt += (k_digits - 1) * 10 + 9;
  43.             k_digits++;
  44.         }else{
  45.             tmp = n / powten;
  46.             cnt += tmp + (powten == 1 || tmp == 0 ? 0 : 1);
  47.             n = n % powten;
  48.             powten /= 10;
  49.         }
  50.     }
  51.  
  52.     cout << cnt << endl;
  53. }
  54.  
  55. int main(){
  56.  
  57.     int t;
  58.     cin >> t;
  59.     for (int i = 0; i < t; i++)
  60.             f();
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement