Cod sursa(job #1598840)

Utilizator ArceyGeorge Cioroiu Arcey Data 13 februarie 2016 13:18:07
Problema Sum Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <cstdio>
#include <iostream>
#include <set>
#include <climits>
#include <map>
#include <algorithm>
#include <list>
#include <vector>
#include <utility>
#include <cstdlib>
#include <iomanip>
#include <cstring>
#include <string>
#include <cmath>

using namespace std;

int main() {
  //  freopen("tt.txt", "r", stdin);
    freopen("sum.in", "r", stdin);
    freopen("sum.out", "w", stdout);

    ios::sync_with_stdio(false);
    cin.tie(0);

    int fi[100001];
    for (int i = 2; i <= 100000; i++) {
        fi[i] = i - 1;
    }
    fi[1] = 1;
    for (int i = 2; i + i <= 100000; i++) {
        for (int j = i + i; j <= 100000; j += i) {
            fi[j] -= fi[i];
        }
    }

    long long ans[100001];
    for (int i = 1; i <= 100000; i++) {
        ans[i] = (((long long)i * fi[i]) << 1);
    }

    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        string s;
        cin >> s;
        int x = 0;
        for (int j = 0; j < s.length(); j++) {
            x *= 10;
            x += s[j] - '0';
        }
        cout << ans[x] << "\n";
    }

    return 0;
}