Pagini recente » Borderou de evaluare (job #2247116) | Cod sursa (job #505242) | Cod sursa (job #1967278) | Cod sursa (job #1837431) | Cod sursa (job #1967409)
#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(){
for(int i=2;i<=1000000;i++)
if(prim[i]==0){
for(int j=i*2;j<=1000000;j+=i)
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*=base;
base*=base;
}
return produs;
}
void ssnd(long long nr){
vector <char> putere(1000001,0);
int n;
long long divizori=1,suma=1;
for(int i=0;factori[i]<=nr;i++){
if(nr%factori[i]==0){
n=i;
while(nr%factori[i]==0){
putere[i]++;
nr=nr/factori[i];
}
}
}
for(int i=0;i<=n;i++)
divizori*=putere[i]+1,suma*=(lg_pow(factori[i],putere[i]+1)-1)/(factori[i]-1);
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_appendix();
}