Cod sursa(job #669553)

Utilizator davidoceaSintamarian David davidocea Data 27 ianuarie 2012 11:50:14
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <cstdio>
 
 
int a[1124312],cif[123213],pu[1231231];
 
int main(){
        long long n,t,i,j,k,s,cp,cn,l,su,v;
        
	freopen("ssnd.in","r",stdin);
	freopen("ssnd.out","w",stdout);
        
        scanf("%lld",&t);
        
        for(k=1;k<=t;++k){
			scanf("%lld", &n);
			s=0;
			cn=n;
			cp=0;
			j=0;
			l=0;
			su=0;
			v=0;
			for(i=2;cn>1;++i){
				cp=0;
				pu[v]=i;
				while(cn%i==0&&cn>1){
					cp++;
					cn=cn/i;
					if(i!=cif[l-1]) cif[l++]=i;
					pu[v]=pu[v]*i;
				}
				if(cp>0) {
					a[j++]=cp;
					v++;
				} 
		}
		cp=1;
		for(i=0;i<j;++i){
				cp=cp*(a[i]+1);
		}
		su=1;
		for(i=0;i<j;++i){
			su=(su%9973)*(((pu[i]-1)%9973)/((cif[i]-1)%9973));
			su=su%9973;
		}
		printf("%lld %lld\n", cp, su);
		for(i=0;i<=j;++i){
			cif[i]=0;
			pu[i]=0;
			a[i]=0;
		}
	}
}