Pagini recente » Cod sursa (job #1012796) | Cod sursa (job #2609682) | Cod sursa (job #1076777) | Cod sursa (job #1042342) | Cod sursa (job #2571739)
#include <bits/stdc++.h>
#define mod 9973
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long ridicare_putere(long long baza,long long exp)
{
if(exp==0)return 1;
else if(exp==1)return baza;
else
{
if(exp%2==1)return ((baza*ridicare_putere(baza,exp-1)%mod)%mod);
else return (ridicare_putere((baza*baza)%mod,exp/2)%mod);
}
}
long long nr_divizori,prod1,prod2,suma_divizori,d,t,Q,q,n,prim[1000010];
bool ciur[1000010];
int main()
{
ciur[0]=ciur[1]=1;
for(d=2;d<=1000000;d++)
{
if(ciur[d]==0)
{
t++;
prim[t]=d;
for(long long i=d*d;i<=1000000;i+=d)
ciur[i]=1;
}
}
f>>Q;
for(int q=1;q<=Q;q++)
{
f>>n;
d=1;nr_divizori=1;prod1=1;prod2=1;
while(prim[d]*prim[d]<=n)
{
if(n%prim[d]==0)
{
int putere=0;
while(n%prim[d]==0)putere++,n/=prim[d];
nr_divizori*=(putere+1);
prod1 = (prod1*(ridicare_putere(prim[d],putere+1)%mod-1)%mod)%mod;
prod2 = (prod2*(prim[d]-1)%mod)%mod;
}
d++;
}
if(n!=1)
{
nr_divizori*=2;
prod1 = (prod1*(n*n-1)%mod)%mod;
prod2 = (prod2*(n-1))%mod;
}
suma_divizori=(prod1*ridicare_putere(prod2,mod-2)%mod)%mod;
g<<nr_divizori<<" "<<suma_divizori<<'\n';
}
return 0;
}