Pagini recente » Cod sursa (job #1720276) | Cod sursa (job #90353) | Cod sursa (job #2893980) | Cod sursa (job #2281024) | Cod sursa (job #840487)
Cod sursa(job #840487)
#include <fstream>
#include <bitset>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
typedef unsigned long long int lung;
static const int maxp = 1000005;
static const int mod = 9973;
lung n;
int t, i, k, v[maxp];
bitset<maxp> a;
void ciur()
{
int i, j;
k=1;
v[1]=2;
for(i=3; i<=maxp; i+=2)
{
if(a[i]==0) v[++k]=i;
for (j=3*i; j<=maxp; j+= (i<<1)) a[j]=1;
}
}
void solve()
{
lung sum=1, nrd=1;
f>>n;
for (int i=1; i<=k && (lung) v[i] * v[i] <= n; ++i)
{
if(n % v[i] == 0)
{
int p=1;
lung x=v[i];
while(n % v[i] == 0)
{
x *= v[i];
n /= v[i];
++p;
}
nrd *= p;
nrd %= mod;
sum *= (x-1)/(v[i]-1);
sum %= mod;
}
}
if(n > 1)
{
nrd <<= 1;
sum = ( (lung) sum*(n+1) % mod);
}
g<<nrd<<" "<<sum<<"\n";
}
int main()
{
ciur();
for (f>>t; t; t--) solve();
}