v 0. Pasted by slipstak2 as cpp at 2011-01-06 17:23:30 MSK and set expiration to never.

Paste will expire never.

  1. // Меньшиков. Тренировка 12.
  2. // 12A. Последовательность [seq2]
  3. // ibelyaev: 30Dec2010
  4.  
  5. #include <iostream>
  6. #include <cstdio>
  7. #include <vector>
  8.  
  9. using namespace std;
  10.  
  11. const int size = 1010;
  12. long long n;
  13. vector<int> mas;
  14. vector<int> mem;
  15. vector<int> pos;
  16. void input()
  17. {
  18.     mas.resize(size);
  19.     mem.resize(size);
  20.     pos.resize(size);
  21.     cin>>mas[0]>>mas[1]>>mas[2];
  22.     mem[mas[2] + 10*mas[1] + 100*mas[0]] = 1;
  23.  
  24.     cin>>n;
  25.     n--;
  26. }
  27. void solve()
  28. {
  29.     int base = -1;
  30.     int len = -1;
  31.     for (int i=3;i<size;i++)
  32.     {
  33.         mas[i] = (mas[i-1] + mas[i-2] + mas[i-3])%10;
  34.         int value = mas[i-1] + 10*mas[i-2] + 100*mas[i-3];
  35.         if (mem[value] && i!=3)
  36.         {
  37.             base = pos[value];
  38.             len = i - 3 - base;
  39.             break;
  40.         }
  41.         mem[value] = 1;
  42.         pos[value] = i-3;
  43.     }
  44.     if (n < base + len)
  45.         cout<<mas[n];
  46.     else
  47.     {
  48.         int index = base + (n - base) % len;
  49.         cout<<mas[index];
  50.     }
  51. }
  52. int main()
  53. {
  54.     freopen("input.txt","r",stdin);
  55.     freopen("output.txt","w",stdout);
  56.  
  57.     input();
  58.     solve();
  59.     return 0;
  60. }


Editing is locked.