Cod sursa(job #875729)

Utilizator ioalexno1Alexandru Bunget ioalexno1 Data 10 februarie 2013 18:42:48
Problema Suma si numarul divizorilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <cstdio>
#define mod 9973
using namespace std;
int main()
{ int n,nr,d,i,x,sd,y;
freopen("ssnd.in","r",stdin); freopen("ssnd.out","w",stdout);
scanf("%d\n",&n);
for(;n>=1;--n)
    {
    scanf("%d\n",&x);
    sd=1; nr=1;
    if(x%2==0){ y=1; d=0; while(x%2==0){ ++d; x/=2; y=y*2; } y=(y*2-1); sd=(sd*y)%mod; nr=nr*(d+1);}
    i=3;
    while(x!=1&&i*i<=x)
        {
        if(x%i==0){ y=1; d=0; while(x%i==0){ ++d; x/=i; y=y*i; } y=(y*i-1)/(i-1); sd=(sd*y)%mod; nr=nr*(d+1); }
        i+=2;
        }
    if(x!=1){ nr=nr*2; y=(x*x-1)/(x-1); sd=(sd*y)%mod; }
    printf("%d %d\n",nr,sd);
    }
fclose(stdin);
fclose(stdout);
return 0;
}