Guest User

Untitled

a guest
Nov 19th, 2014
187
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. bool compare(int *a, int *b)
  9. {
  10.     int i = 0;
  11.     while (i < 1001)
  12.     {
  13.         if (a[i] < b[i])
  14.         {
  15.             return true;
  16.         }
  17.         if (a[i] > b[i])
  18.         {
  19.             return false;
  20.         }
  21.         i++;
  22.     }
  23.     return false;
  24. }
  25.  
  26. bool compare1(int *a, int *b)
  27. {
  28.     int i = 0;
  29.     while (i < 1001)
  30.     {
  31.         if (a[i] < b[i])
  32.         {
  33.             return true;
  34.         }
  35.         if (a[i] > b[i])
  36.         {
  37.             return false;
  38.         }
  39.         i++;
  40.     }
  41.     return true;
  42. }
  43.  
  44. int *log4(int *a)
  45. {
  46.     int *b0 = new int[1001];
  47.     int *b1 = new int[1001];
  48.     for (int i = 0; i < 1000; i++)
  49.     {
  50.         b1[i] = 0;
  51.         b0[i] = 0;
  52.     }
  53.     b1[1000] = 1;
  54.     b0[1000] = 1;
  55.     while (compare(b1, a))
  56.     {
  57.         for (int i = 0; i < 1001; i++)
  58.         {
  59.             cout << b1[i] << " ";
  60.         }
  61.         cout << endl;
  62.         for (int i = 0; i < 1001; i++)
  63.         {
  64.             b0[i] = b1[i];
  65.         }
  66.         int mem = 0;
  67.         for (int i = 1000; i >= 0; i--)
  68.         {
  69.             int x = b0[i] * 4 + mem;
  70.             mem = x / 10;
  71.             b1[i] = x % 10;
  72.         }
  73.     }
  74.     return b0;
  75. }
  76.  
  77. int *mul3(int *a)
  78. {
  79.     int mem = 0;
  80.     int b[1001];
  81.     for (int i = 100; i >= 0; i--)
  82.     {
  83.         int x = a[i] * 3 + mem;
  84.         mem = x / 10;
  85.         b[i] = x % 10;
  86.     }
  87.     return b;
  88. }
  89.  
  90. int main()
  91. {
  92.     ifstream fin ("guess.in");
  93.     ofstream fout ("guess.out");
  94.  
  95.     int n;
  96.     fin >> n;
  97.     string s;
  98.     int res;
  99.     int v4[1001];
  100.     for (int i = 0; i < 1001; i++)
  101.     {
  102.         v4[i] = 0;
  103.     }
  104.     v4[1000] = 4;
  105.     vector<int> st;
  106.     for (int i = 0; i < n; i++)
  107.     {
  108.         fin >> s;
  109.         int k[1001];
  110.         for (int i = s.length() - 1; i >= 0; i--)
  111.         {
  112.             k[1001 - s.length() + i] = s[i] - 'a';
  113.             while (compare(v4, k))
  114.             {
  115.                 int *l = log4(k);
  116.                 for (int i = 0; i < 1001; i++)
  117.                 {
  118.                     cout << l[i] << " ";
  119.                 }
  120.                 cout << endl;
  121.                 cout.flush();
  122.                 if (compare1(k, mul3(l)))
  123.                 {
  124.                     st.push_back(3);
  125.                 }
  126.                 else
  127.                 {
  128.                     st.push_back(0);
  129.                 }
  130.             }
  131.             if (k[1000] == 1 || k[1000] == 4)
  132.             {
  133.                 res = 1;
  134.             }
  135.             else
  136.             {
  137.                 res = 2;
  138.             }
  139.             while (st.size() > 0)
  140.             {
  141.                 if (st[st.size() - 1] == 3)
  142.                 {
  143.                     res = 3 - res;
  144.                 }
  145.                 st.pop_back();
  146.             }
  147.         }
  148.     }
  149.     fout << res;
  150.  
  151.     return 0;
  152. }
RAW Paste Data