Advertisement
a53

Cifra4

a53
May 19th, 2019
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3. ifstream fin ("cifra4.in");
  4. ofstream fout ("cifra4.out");
  5. long long n,nr,x,y,p9[30];
  6. int t,c,i,k,v[30];
  7.  
  8. long long getpoz (long long x)
  9. {
  10. long long nr = x;
  11. k = 0;
  12. while (nr){
  13. v[++k] = nr % 10;
  14. nr /= 10;
  15. }
  16. for (int i=1;i<=k;i++)
  17. if (v[i] > c)
  18. v[i]--;
  19. nr = 0;
  20. for (i=k;i>=1;i--)
  21. nr = nr*9+v[i];
  22. if (c != 0)
  23. return nr+1;
  24. long long sol = 0, p = 1;
  25. nr = 0;
  26. do
  27. {
  28. int cif = x % 10;
  29. sol += (cif-1)*p;
  30. p *= 9;
  31. nr++;
  32. x /= 10;
  33. } while (x > 0);
  34. for (int i=1;i<nr;i++)
  35. sol += p9[i];
  36. return sol;
  37. }
  38.  
  39. int main ()
  40. {
  41.  
  42. fin>>t;
  43. p9[0] = 1;
  44. for (i=1;i<=17;i++)
  45. p9[i] = p9[i-1]*9;
  46. if (t == 1)
  47. {
  48. fin>>c>>n;
  49. if (c != 0)
  50. {
  51. nr = n-1;
  52. while (nr)
  53. {
  54. v[++k] = nr%9;
  55. nr /= 9;
  56. }
  57. for (i=1;i<=k;i++)
  58. if (v[i] >= c)
  59. v[i]++;
  60. for (i=k;i>=1;i--)
  61. fout<<v[i];
  62. return 0;
  63. }
  64. nr = n-1;
  65. i = 1;
  66. while (1)
  67. {
  68. if (nr - p9[i] >= 0)
  69. {
  70. nr -= p9[i];
  71. i++;
  72. } else
  73. break;
  74. }
  75. while (k < i)
  76. {
  77. v[++k] = nr%9;
  78. nr /= 9;
  79. }
  80. for (i=1;i<=k;i++)
  81. if (v[i] >= c)
  82. v[i]++;
  83. for (i=k;i>=1;i--)
  84. fout<<v[i];
  85. return 0;
  86. }
  87. fin>>c>>x>>y;
  88. if (x > y)
  89. swap (x,y);
  90. fout<<(y-x+1)-(getpoz(y)-getpoz(x)+1);
  91. return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement