Cod sursa(job #629961)

Utilizator ContraPunctContrapunct ContraPunct Data 4 noiembrie 2011 11:42:15
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<cstdio>
#include<fstream>
#include<vector>


using namespace std;
const long long Nmax = 1000000;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");

int max1,t;
struct ssnd 
{
	int suma;
	int nr;
};
vector<int> numere;
ssnd ciur[Nmax];
void ReadData()
{
	int i,x;
	fin>>t;
	for( i=0;i<t;i++)
	{
		fin>>x;
		if(max1 < x)
			max1 = x;
		numere.push_back(x);
	}
}
void Ciur()
{
	int i,j;
	ciur[1].suma = ciur[1].nr = 1;
	for(i=2;i<=max1;i++)
	{
		ciur[i].suma += 1; // il adaug pe 1;
		ciur[i].nr ++;
		for( j = i; j <=max1; j+=i)
		{
			ciur[j].suma += i;
			ciur[j].suma = ciur[j].suma % 9973;
			ciur[j].nr ++;
		}
	}
}
void WriteData()
{
	int i;
	for(i=0;i<t;i++)
	{
		fout<<ciur[numere[i]].nr<<" "<<ciur[numere[i]].suma<<"\n";
	}
}
int main()
{
	ReadData();
	Ciur();
	WriteData();
	return 0;
}