Pagini recente » Cod sursa (job #547252) | Cod sursa (job #596477) | Cod sursa (job #823019) | Cod sursa (job #1153734) | Cod sursa (job #1968168)
#include <bits/stdc++.h>
using namespace std;
FILE* fin;FILE* fout;
short in_loc,out_loc;
char in_buff[4096],out_buff[4096];
char prim[1000001];
vector <int> factori;
void read_init(const char* nume){
fin=fopen(nume,"r");
in_loc=4095;
}
char read_ch(){
in_loc++;
if(in_loc==4096){
in_loc=0;
fread(in_buff,1,4096,fin);
}
return in_buff[in_loc];
}
long long read_u64(){
long long numar;
char c;
while(!isdigit(c=read_ch()));
numar=c-'0';
while(isdigit(c=read_ch()))
numar=numar*10+c-'0';
return numar;
}
void write_init(const char* nume){
fout=fopen(nume,"w");
out_loc=0;
}
void write_ch(char c){
if(out_loc==4096){
out_loc=0;
fwrite(out_buff,1,4096,fout);
}
out_buff[out_loc++]=c;
}
void write_u64(long long numar){
if(numar<=9)write_ch(numar+'0');
else{
write_u64(numar/10);
write_ch(numar%10+'0');
}
}
void write_appendix(){
fwrite(out_buff,1,out_loc,fout);
fclose(fout);
}
void ciur_Eratosthenes(){
factori.push_back(2);
for(int i=3;i<=1000000;i+=2)
if(prim[i]==0){
for(int j=i*3;j<=1000000;j+=i*2)
prim[j]=1;
factori.push_back(i);
}
}
long long lg_pow(long long base,long long exp){
long long produs=1;
for(exp=exp;exp>0;exp=exp/2){
if(exp%2)produs=(produs*base)%9973;
base=(base*base)%9973;
}
return produs;
}
void ssnd(long long nr){
long long divizori=1,suma=1;
for(int i=0;factori[i]*factori[i]<=nr;i++){
long long p=0;
if(nr%factori[i]==0){
while(nr%factori[i]==0){
p++;
nr=nr/factori[i];
}
}
divizori*=(p+1);
suma=suma*((lg_pow(factori[i],p+1)-1)/(factori[i]-1));
suma%=9973;
}
if(nr>1){
divizori*=2;
suma=suma*(nr+1)%9973;
}
write_u64(divizori);write_ch(' ');write_u64(suma);write_ch('\n');
}
short teste;
void citire(){
long long x;
for(short i=1;i<=teste;i++){
x=read_u64();
ssnd(x);
}
}
int main(){
read_init("ssnd.in");
write_init("ssnd.out");
teste=read_u64();
ciur_Eratosthenes();
citire();
write_ch('\n');
write_appendix();
}