Cod sursa(job #1843107)
Utilizator | Data | 8 ianuarie 2017 09:16:55 | |
---|---|---|---|
Problema | Suma si numarul divizorilor | Scor | 40 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.01 kb |
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
bool v[1000004];
int main()
{
int t,i,j;
f>>t;
for(i=2;i<=99999;i++)
{
if(v[i]==0)
{
j=i;
while(j<=1000000)
{
v[j]=1;
j+=i;
}
}
}
int a,n,s,p,e;
for(j=1;j<=t;j++)
{
f>>a;
s=sqrt(a);
p=0;
e=0;
for(i=1;i<=s-1;i++)
{
if(a%i==0)
{
p+=2;
e+=i+(a/i);
e%=9973;
}
}
if(s*s==a)
{
p+=1;
e+=s;
e%=9973;
}
else
{
if(a%s==0)
{
p+=2;
e+=s+a/s;
e%=9973;
}
}
g<<p<<" "<<e<<'\n';
}
f.close();
g.close();
return 0;
}