fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int k;
  4. string s;
  5. long long cal[15][1000005];
  6.  
  7. long long preCal(int x, int i)
  8. {
  9. // Truong hop da duoc tinh toan
  10. if (cal[x][i] != -1)
  11. return cal[x][i];
  12.  
  13. // Truong hop nhan doi 0 lan
  14. if (i == 0)
  15. return cal[x][i] = (long long) x;
  16.  
  17. // Truong hop nhan doi i lan
  18. cal[x][i] = 0;
  19. int tmp = x * 2;
  20. while (tmp > 0)
  21. {
  22. cal[x][i] += preCal(tmp % 10, i - 1);
  23. tmp /= 10;
  24. }
  25.  
  26. return cal[x][i];
  27. }
  28.  
  29. int main()
  30. {
  31. // freopen("VD1.INP", "r", stdin);
  32. // freopen("VD1.OUT", "w", stdout);
  33.  
  34. cin >> s;
  35. cin >> k;
  36.  
  37. memset(cal, -1, sizeof(cal));
  38. for (int i = 1; i <= k; i++)
  39. cal[0][i] = 0;
  40.  
  41. for (int x = 1; x <= 9; x++)
  42. for (int i = 1; i <= k; i++)
  43. cal[x][i] = preCal(x, i);
  44.  
  45. long long ans = 0;
  46. for (int j = 0; j < s.length(); j++)
  47. {
  48. int x = s[j] - '0';
  49. ans += cal[x][k];
  50. }
  51.  
  52. cout << ans;
  53.  
  54. return 0;
  55. }
Success #stdin #stdout 0.02s 120808KB
stdin
514 2
stdout
13