Cod sursa(job #3177047)

Utilizator VladNANegoita Vlad-Andrei VladNA Data 28 noiembrie 2023 13:00:50
Problema Cifra Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <string>
#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("sse,avx,fma,avx2,bmi,bmi2,lzcnt,popcnt")

using namespace std;

ifstream cin("cifra.in");
ofstream cout("cifra.out");

int exp(int base, int power) {
  int ans = 1;
  while (power) {
    if (power & 1)
      ans = (ans * base) % 10;
    base = (base * base) % 10;
    power >>= 1;
  }
  return ans;
}

void solve() {
  int last_digit[10][4];
  for (int i = 0; i < 10; ++i)
    for (int j = 0; j < 4; ++j)
      last_digit[i][j] = exp(i, j + 4);

  string str;
  getline(cin, str);
  while (!str.empty() && !isdigit(str.back()))
    str.pop_back();

  int n = 0;
  if (str.size() == 1) {
    n = str[0] - '0';
  } else {
    n = (str.back() - '0') + 10 * (str[str.size() - 2] - '0');
  }

  int sum = 0;
  for (int i = 1; i <= n; ++i)
    sum = (sum + last_digit[i % 10][i % 4]) % 10;

  cout << sum << endl;
}

int main() {
  int t = 1;
  cin >> t;
  string aux;
  getline(cin, aux);
  while (t--)
    solve();

  return 0;
}