Cod sursa(job #1035931)

Utilizator RyuzakiL Lawliet Ryuzaki Data 18 noiembrie 2013 21:23:36
Problema Dtcsu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

#define MOD 1000007

typedef long long ll;
typedef vector<long long>::iterator iter;

// <parsing>
FILE *fin = fopen("dtcsu.in", "r");
unsigned const maxb = 8192;
char buf[maxb];
int ptr = maxb;

inline ll getLl() {
    while (buf[ptr] < '0' || '9' < buf[ptr]) {
        if (++ptr >= maxb) {
            fread(buf, maxb, 1, fin);
            ptr = 0;
        }
    }
    ll nr = 0;
    while ('0' <= buf[ptr] && buf[ptr] <= '9') {
        nr = nr * 10 + buf[ptr] - '0';
        if (++ptr >= maxb) {
            fread(buf, maxb, 1, fin);
            ptr = 0;
        }
    }
    return nr;
}
// </parsing>
ofstream g("dtcsu.out");

ll q;

int getNext(int nr) {
    switch (nr) {
        case 2:
            return 3;
        case 3:
            return 5;
        case 5:
            return 7;
        case 7:
            return 11;
        case 11:
            return 0;
    }
}

int main() {
    for (int i = 0; i < 276997; i++) {
        ll nr = getLl();
    }

    ll sol = 0;
    q = getLl();
    for (ll i = 1; i <= q; i++) {
        ll nr = getLl();

        int p = 2;
        while (p != 0) {
            while (nr % p == 0) {
                nr /= p;
            }
            p = getNext(p);
        }

        if (nr == 1) {
            sol++;
        }
    }

    g << sol;

    g.close();
    return 0;
}