Cod sursa(job #635198)

Utilizator johnny2008Diaconu Ion johnny2008 Data 18 noiembrie 2011 19:12:27
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<fstream>
#include<iostream>
using namespace std;
bool lol[1000001];
long long p[80000];
void ciur(){
	long long i,j;
	for(i=2;i<=1000000;++i)
	{
		
		if(lol[i]!=true){

			p[0]++;
			p[p[0]]=i;
			
			for(j=i;j*i<=1000000;++j)
			{
				lol[i*j]=true;
			}
		}
	}
}
long long n,nr,s;
void desco(){
	long long i,a,put;
	nr=1;
	s=1;
	for(i=1;p[i]*p[i]<=n;++i){
		
		if(n%p[i]==0){
			a=p[i]*p[i];
			put=1;
			n=n/p[i];
			while(n%p[i]==0)	
			{
				n/=p[i];
				put++;
				a=a*p[i];
			}
			
			nr*=put+1;
			a--;
			s=(a/(p[i]-1)*s)%9973;
		}
	}
	if(n!=1)
	{
		nr*=2;
		s=(((n*n-1)/(n-1))%9973*s)%9973;
	}
}
		
	
int main(){
	freopen("ssnd.in","r",stdin);
	ofstream g("ssnd.out");
	long long t,i;
	scanf("%lld",&t);
	ciur();
	for(i=1;i<=t;++i){
		scanf("%lld",&n);
		desco();
		g<<nr<<" "<<s<<"\n";
	}
	return 0;
}