fork(2) download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define int long long
  6.  
  7. int n_digs;
  8. int pow_sum[10];
  9. int pows[10];
  10.  
  11. int between(int a,int b,int a_digs,int n)
  12. {
  13. int k=n_digs-a_digs;
  14. int ret=pow_sum[k-1];
  15. a*=pows[k];
  16. b*=pows[k];
  17. ret+=max(0ll,min(n+1,b)-a);
  18. return ret;
  19. }
  20.  
  21. main()
  22. {
  23. int n,k;
  24. cin>>n>>k;
  25. n_digs=1+log10(n);
  26.  
  27. pows[1]=pow_sum[1]=10;
  28. for(int i=2;i<10;i++)
  29. {
  30. pows[i]=10*pows[i-1];
  31. pow_sum[i]=pows[i]+pow_sum[i-1];
  32. }
  33.  
  34.  
  35. int c_ord=1;
  36. int c_num=1;
  37. int c_dig=1;
  38. while(c_ord<k)
  39. {
  40. int n_ord=c_ord+1+between(c_num,c_num+1,c_dig,n);
  41. if(n_ord<=k)
  42. {
  43. c_num++;
  44. c_ord=n_ord;
  45. }
  46. else
  47. {
  48. c_num*=10;
  49. c_ord++;
  50. c_dig++;
  51. }
  52. }
  53. cout<<c_num<<endl;
  54. }
  55.  
Success #stdin #stdout 0s 3344KB
stdin
Standard input is empty
stdout
1