Cod sursa(job #461187)

Utilizator ms-ninjacristescu liviu ms-ninja Data 5 iunie 2010 21:17:07
Problema Invers modular Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>

using namespace std;

#define dim 1000003

int v[dim], q[100000];

int main()
{
	long long i, j, t, n, nr, s;
	long long unsigned p, div, aux;
	ifstream fin("ssnd.in");
	ofstream fout("ssnd.out");
	
	fin>>t;
	int f=0;
	for(i=2;i<=1000000;++i)
		if(v[i]==0)
		{
			q[f]=i;
			++f;
			for(j=i*i;j<=1000000;j+=i)
				v[j]=1;
		}
	
	for(i=1;i<=t;++i)
	{
		fin>>n;
		j=0;
		nr=0;
		s=1;
		div=1;
		aux=n;
		
		
		while(q[j]*q[j]<=n)
		{
			
			
			p=1;nr=0;
			while(n%q[j]==0)
			{
				++nr;
				p*=q[j];
				//s=(s+q[j])%9973;
				n/=q[j];
			}
			div*=(nr+1);
			s*=(((p*q[j])-1)/(q[j]-1))%9973;
			++j;
			n=aux;
		}
		if(v[n]==0)
			fout<<"2" <<" " <<n+1;
		else
			fout<<div <<" " <<s%9973 <<'\n';
	}
			
			return 0;
}