Pagini recente » Cod sursa (job #1440578) | Cod sursa (job #1541458) | Cod sursa (job #728811) | Cod sursa (job #3251394) | Cod sursa (job #787342)
Cod sursa(job #787342)
#include <fstream>
#include <vector>
#define RADN 1000001
#define NRM 9973
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
struct divizori{
int put;
long long nr;};
int t;
long long n,S,p,x;
bool ciur[RADN+5];
vector<int> prime;
vector<divizori> div;
divizori aux;
int main()
{
int i,j,k;
prime.push_back(2);
for(i=3;i<=RADN;i+=2){
if(!ciur[i]){
prime.push_back(i);
for(j=i;j<=RADN;j+=2*i)
ciur[j]=1;}}
f>>t;
for(j=1;j<=t;j++){
div.clear();
f>>n;
for(i=0;i<prime.size()&&n>1;i++){
if(!(n%prime[i])){
aux.nr=prime[i];
aux.put=0;
while(!(n%prime[i])){
aux.put++;
n/=prime[i];}
div.push_back(aux);}}
if(n>1){
aux.nr=n;
aux.put=1;
div.push_back(aux);}
S=1;p=1;
for(i=0;i<div.size();i++){
p*=(div[i].put+1);
x=1;
for(k=1;k<=div[i].put+1;k++)
x*=div[i].nr;
x--;
x/=(div[i].nr-1);
S=(S*x)%NRM;}
g<<p<<' '<<S<<'\n';}
f.close();
g.close();
return 0;
}