Cod sursa(job #1466767)

Utilizator allexx2200Atanasiu Alexandru-Marian allexx2200 Data 30 iulie 2015 11:40:40
Problema Sum Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <stdio.h>
#include <iostream>
#include <list>

#define FIN "sum.in"
#define FOUT "sum.out"

#define N_MAX 100000

int N, X;

FILE *in, *out;

int seave[2 * N_MAX];


int solve(){
	for(int i=0; i < 2 * X; i++){
		seave[i] = i;
	}

	int to_f = X;
	std::list<int> divizors;
	for(int d = 2; to_f > 1; d++){
		if(to_f % d == 0) divizors.push_back(d);
		while(to_f % d == 0) to_f /= d;
	}

	for(int d : divizors){
		for(int i = 1; d * i <= 2 * X; i++){
			seave[d*i] = 0;
		}
	}

	int sum = 0;
	for(int i = 1; i < 2 * X; i++){
		sum += seave[i];
	}
	return sum;
}

int main(){
	in = fopen(FIN, "rt");
	out = fopen(FOUT, "wt");

	if(!in || !out) return 1;

	fscanf(in, "%d", &N);
	int sum;
	for(int i=0; i < N; i++){
		sum = 0;
		fscanf(in, "%d", &X);
		sum = solve();
		fprintf(out, "%d\n", sum);
	}

	//std::cin >> X;

	fclose(in);
	fclose(out);

	return 0;
}