Mai intai trebuie sa te autentifici.
Cod sursa(job #1017636)
| Utilizator | Data | 28 octombrie 2013 00:28:54 | |
|---|---|---|---|
| Problema | Suma si numarul divizorilor | Scor | 30 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 1.58 kb |
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
char ap[1000001];
ifstream f("ssnd.in");
ofstream g("ssnd.out");
void ciur(){
long long i,j;
for(i=2;i<=1000000;i++){
if(ap[i]==0)
for(j=i+i;j<=1000000;j=j+i){
ap[j]='1';
}
}
}
void calculeaza(int x){
long long i,j;
long long limit=sqrt(x);
long long suma=1+x;
long long cont=2;
char vazut[1000001];
if(ap[x]!='1'){
g<<cont<<" "<<suma%9973<<'\n';
}
else{
//initializare cu 0
for(i=1;i<=1000000;i++)
vazut[i]='0';
//initializare done
for(i=2;i<=x/2;i++){
if(ap[i]!='1' && x%i==0){
suma=suma+i; //cout<<cont<<" "<<suma<<'\n';
cont++;
//cout<<i;
//cout<<i<<'+';
for(j=+i+i;j<=x/2;j=j+i){
// cout<<"avem "<<j<<"si a aparut?"<<vazut[j]<<"mm";
if(x%j==0 && vazut[j]!='1'){
suma=suma+j;
cont++;
vazut[j]='1';
// cout<<j<<'+';
// cout<<"avem "<<j<<"si a aparut?"<<vazut[j]<<"mm";
}
}
}
}
g<<cont<<" "<<suma%9973<<'\n';
}
//cout<<'\n';
}
int main()
{
long long t,n,i;
ciur();
f>>t;
for(i=0;i<t;i++){
f>>n;
//cout<<calculeaza(n)<<" ";
calculeaza(n);
}
return 0;
}
