Pagini recente » Cod sursa (job #100094) | Cod sursa (job #1015450) | Cod sursa (job #2542748) | Cod sursa (job #2980300) | Cod sursa (job #2367684)
#include<fstream>
using namespace std;
ifstream f ("ssnd.in");
ofstream g ("ssnd.out");
int t,viz[1000110],nr[1000100],p;
long long n,numar,sum,q,k;
int putere(int a,int b){
int x=1;
a%=9973;
while(b){
if(b%2){
x=(x*a)%9973;
--b;
}
else{
a=(a*a)%9973;
b/=2;
}
}
return x;
}
int main()
{
for(int d=2;d<=1000001;++d){
if(!viz[d]){
nr[++k]=d;
for(int j=d+d;j<1000001;j+=d)viz[j]=1;
}
}
f>>t;
for(int i=1;i<=t;++i){
f>>n;
numar=1;
sum=1;
q=1;
while(nr[q]*nr[q]<=n&&q<=k){
p=1;
while(n%nr[q]==0){
++p;
n/=nr[q];
}
if(p!=1){
int val1=(putere(nr[q],p)-1)%9973;
int val2=putere(nr[q]-1,9973)%9973;
numar=numar*p;
sum=(((sum*val1)%9973)*val2)%9973;
}
++q;
}
if(n>1){
sum=(sum*(n+1))%9973;
numar=2*numar;
}
g<<numar%9973<<" "<<sum%9973<<'\n';
}
}