fork(2) download
  1. #include<bits/stdc++.h>
  2. #include<fstream>
  3. #define llu long long unsigned
  4. #define fi(i,a,b) for(int i=(a);i<(b);i++)
  5. #define fd(i,a,b) for(int i=(a);i>(b);--i)
  6. #define pb push_back
  7.  
  8. using namespace::std;
  9.  
  10. typedef vector <int> vi;
  11. vector<llu> dp;
  12. vi in;
  13. void f(int n)
  14. {
  15. dp[n] = dp[n+1];
  16. if(in[n]*10 + in[n+1] <= 26)
  17. dp[n] += dp[n+2];
  18. }
  19. void set_dp(string s, vector<llu> &dp, int len)
  20. {
  21. dp = vector<llu>(len+1, 0);
  22. dp[len] = 0;
  23. dp[len-1] = 1;
  24. if(10*(s.at(len-2) -'0') + s.at(len-1) - '0' <= 26) dp[len-2] = 2;
  25. else dp[len-2] = 1;
  26. }
  27. int main()
  28. {
  29. // freopen("in.txt", "r", stdin);
  30. int i, len, flag = 1;
  31.  
  32. string s;
  33. cin>>s;
  34. while(flag || s.at(0) != 48)
  35. {
  36. flag = 0;
  37. len = 0;
  38. for(string::iterator it = s.begin(); it != s.end(); ++it)
  39. len ++;
  40.  
  41. set_dp(s, dp, len);
  42.  
  43. in = vi(len+1, 0);
  44. fi(i, 0, len)
  45. in[i] = s.at(i) - '0';
  46.  
  47. fd(i, len-3, -1)
  48. f(i);
  49.  
  50. cout<<dp[0];
  51. cout<<endl;
  52. cin>>s;
  53. }
  54. return 0;
  55. }
  56.  
Success #stdin #stdout 0s 3480KB
stdin
123123131351654984651321211655648411312331516849846132132135464848112312313135165498465132121165564841131233151684984613213213546484868498461321321354648481123123131351654984651321211655648411312331516849846132132135464848133
25114
1111111111
3333333333
1231231313516549846513212116556484113123315168498461321321354648481123123131351654984651321211655648411312331516849846132132135464848684984613213213546484811231231313516549846513212313135165498465132121165564841131233151684984613213213546484811231231313516549846513212116556484113123315168495165498465132121165564841131233151684984613213213546484811231231313516549846513212116556484113123315168498461321321354648486849846132132135464848112312313135165498465132121165564841131233151684984613213213546484813384613213213546484868498461321321354648481123123131351654984651321
0
stdout
12481083177021997056
6
89
1
10376293541461622784