Pagini recente » Cod sursa (job #63871) | Cod sursa (job #1885596) | Cod sursa (job #2455546) | Cod sursa (job #1754372) | Cod sursa (job #582760)
Cod sursa(job #582760)
#include<fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long prim[9999999],i,j,maxim,suma,putere,s,q;
int v[1001],k,expo;
void ciur()
{for(i=2;i<=maxim;i++)
prim[i]=1;
for(i=2;i*i<=maxim;i++)
if(prim[i])
for(j=i*i;j<=maxim;j+=i)
prim[j]=0;
}
long long ridicare(int baza,int expo)
{int k;
putere=1;
for(k=1;k<=expo;k++) putere*=baza;
return putere;
}
long long suma1(int baza1,int expo1)
{s=0;
do{
s+=ridicare(baza1,--expo1);}while(expo1!=0);
return s;
}
int main()
{ int t,fm,nrd,ok;
f>>t;
for(j=1;j<=t;j++)
{f>>v[j]; if(maxim<v[j]) maxim=v[j];} ciur();
for(j=1;j<=t;j++)
{ nrd=1; ok=0; suma=1;
if(v[j]==0) {nrd*=0; suma*=0;}
for(i=1;i<=v[j]/2;i++)
{fm=0;
if(v[j]%i==0 && prim[i])
{while(v[j]%i==0) {v[j]/=i; fm++;}
nrd*=(fm+1); suma*=suma1(i,(fm+1));
}
if(prim[v[j]] && ok==0) {fm=ok=1; nrd*=(fm+1); suma*=suma1(v[j],(fm+1));
}
}
g<<nrd<<" "<<suma%9973<<'\n';} return 0;
}