Pagini recente » Diferente pentru problema/s2c intre reviziile 36 si 20 | Cod sursa (job #2195838) | Cod sursa (job #1086836) | Cod sursa (job #2439039) | Cod sursa (job #1396981)
#include <cstdio>
#include <cmath>
bool ciur[1000001];
int prime[80001];
int t;
long long n;
int put(int b,int putere)
{
if(putere==0) return 1;
if(putere==1) return b;
int temp=put(b,putere/2);
return temp*temp*put(b,(putere%2));
}
int main()
{
freopen ("ssnd.in","r",stdin);
freopen ("ssnd.out","w",stdout);
int ct=1;
for(int i=2;i<=1000000;i++)
{
if(ciur[i]==0)
{
for(int j=i;j<=1000000/i;j++) ciur[i*j]=1;
}
}
for(int i=2;i<=1000000;i++)
{
if(ciur[i]==0)
{
prime[ct]=i;
ct++;
}
}
scanf("%d",&t);
for(int x=1;x<=t;x++)
{
long long pcard=1,psum=1;
scanf("%lld",&n);
if(n==10) ct=-100;
else ct=0;
int lun=sqrt(n)+1;
for(int i=1;i<=80000;i++)
{
if(prime[i]>lun||prime[i]==0) break;
if(n%prime[i]==0)
{
int c=0;
while(n%prime[i]==0)
{
n/=prime[i];
c++;
}
//if(ct==-100) printf("%d %d\n",prime[i],c+1,put(prime[i],c+1));
pcard*=(c+1);
psum*=(put(prime[i],c+1)-1);
psum/=(prime[i]-1);
psum%=9973;
if(n==1) break;
}
}
if(n!=1)
{
pcard*=2;
psum*=(n*n-1);
psum/=(n-1);
psum%=9973;
}
printf("%lld %lld\n",pcard,psum);
}
}