Cod sursa(job #1232237)
| Utilizator | Data | 22 septembrie 2014 15:51:06 | |
|---|---|---|---|
| Problema | Suma si numarul divizorilor | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.63 kb |
#include<fstream>
#include<cstdio>
using namespace std;
long long p1=1,p2=1,n,i,fa,ca,a,pu,e;
bool ok;
int main(){
freopen("ssnd.in","r",stdin);
ofstream g ("ssnd.out");
scanf("%lld",&n);
for(i=1;i<=n;i++){
scanf("%lld",&a);
fa=2;ca=a;ok=false;
while(ca>=fa*fa&&n!=1){
e=0;pu=1;
while(a%fa==0){a/=fa;e++;pu=pu*fa;ok=true;}
if((fa+1)*(fa+1)>ca&&ok==false){p1=p1*2;
p2=p2*(a*a-1)/(a-1);}
else
if(e!=0){p1=p1*(e+1);
p2=p2*(pu*fa-1)/(fa-1);}
fa++;}
g<<p1<<" "<<p2<<'\n';
p1=1;p2=1;}
return 0;}
