Cod sursa(job #669542)

Utilizator andreidanAndrei Dan andreidan Data 27 ianuarie 2012 11:36:12
Problema Suma si numarul divizorilor Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.77 kb
#include <cstdio>
 
 
int a[1124312];
int cif[123213];
int pu[1231231];
 
int main(){
        long long n,t,div,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*((pu[i]-1)/(cif[i]-1));
						su=su%9973;
                        
                }
				
				printf("%lld %lld\n", cp, su);
				
				for(i=0;i<=j;++i){
					cif[i]=0;
					pu[i]=0;
					a[i]=0;
				}
                                
                
        }
}