Cod sursa(job #2954175)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 13 decembrie 2022 14:39:10
Problema Suma si numarul divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include<fstream>
using namespace std;
ifstream F("1.in");
ofstream G("1.out");
int i,j,k,p[99999],t,o=9973,l;
long long n,m,u,w,z;
bool r[1000001];
int main()
{
    for(p[k++]=2,i=3;i*i<=1e6;++i)
        if(!r[i])
            for(p[k++]=i,r[i]=1,j=i*i;j<=1e6;r[j]=1,j+=2*i);
    for(F>>t;t--;G<<u<<' '<<z<<'\n') {
        for(F>>n,m=n,z=u=1,i=0;i<k&&m>1&&p[i]*p[i]<=m;++i)
            if(m%p[i]==0) {
                for(l=0;m%p[i]==0;m/=p[i],++l);
                for(u*=(l+1),w=j=1;j<l+2;w*=p[i],++j);
                z=(z*(w-1)/(p[i]-1))%o;
            }
        if(m>1) {
            for(u*=2,w=j=1;j<3;w*=m,++j);
            z=(z*(w-1)/(m-1))%o;
        }
    }
    return 0;
}