Cod sursa(job #540356)
| Utilizator | Data | 23 februarie 2011 21:44:07 | |
|---|---|---|---|
| Problema | Suma si numarul divizorilor | Scor | 70 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.44 kb |
#include <fstream>
using namespace std;
long long n,S,P;
const int mod=9973;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
int main()
{
long long i,t,p,q;
in>>t;
while (t--)
{
in>>n;
S=P=1;
for (i=2;i*i<=n;i++)
if (n%i==0)
{
for (p=0,q=i;n%i==0;n/=i,p++,q*=i);
P*=p+1;
S=S*(q-1)/(i-1)%mod;
}
if (n!=1)
{
P*=2;
S=S*(n+1)%mod;
}
out<<P<<" "<<S<<"\n";
}
return 0;
}
