Cod sursa(job #2874831)

Utilizator TeodorLuchianovTeo Luchianov TeodorLuchianov Data 20 martie 2022 12:33:02
Problema Koba Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream in("koba.in");
ofstream out("koba.out");

int freq[11][11][11];

vector <int> presum;

int main() {

  int n, t1, t2, t3, ans = 0, o1 = 10, o2 = 10, o3 = 10;
  in >> n >> t1 >> t2 >> t3;
  t1 = t1 % 10;
  t2 = t2 % 10;
  t3 = t3 % 10;
  presum.push_back(t1);
  presum.push_back(t2 + t1);
  presum.push_back(t3 + t2 + t1);
  while(freq[t1][t2][t3] == 0){
    freq[t1][t2][t3] = freq[o1][o2][o3] + 1;
    o1 = t1;
    o2 = t2;
    o3 = t3;
    int t4 = (t3 + (t1 * t2)) % 10;
    t1 = t2;
    t2 = t3;
    t3 = t4;
    presum.push_back(presum[presum.size() - 1] + t4);
  }
  out << freq[t1][t2][t3] << ' ' << t1 << ' ' << t2 << ' ' << t3 << '\n';
  out << presum.size() << '\n';
  out << presum[0] << ' ';
  for(int i = 1;i < presum.size();i++){
    out << presum[i] - presum[i - 1] << ' ';
  }
  out << '\n';
  presum.pop_back();
  presum.pop_back();
  presum.pop_back();
  if(n > presum.size()){
    n -= presum.size() + 1;
    int presumsize = presum.size() - freq[t1][t2][t3] + 1;
    int ans = presum[presum.size() - 1] + (n / presumsize) * (presum[presum.size() - 1] - presum[freq[t1][t2][t3] - 1] + t1) + (presum[(n % presumsize) + freq[t1][t2][t3] - 1] - presum[freq[t1][t2][t3] - 1] + t1);
    out << ans;
  }else {
    out << presum[n - 1];
  }
  return 0;
}