Cod sursa(job #1732456)

Utilizator danutbodbodnariuc danut danutbod Data 21 iulie 2016 17:33:53
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.39 kb
//var II 70p divizori pana la sqrt(x)
#include <fstream>
const long long   MOD= 9973;
using namespace std;
ifstream fi("ssnd.in");
ofstream fo("ssnd.out");
long long t,x,d,nrd,sd,i;
int main()
{
    fi>>t;
    for(i=1;i<=t;i++)
    {
        fi>>x;
        nrd=0;sd=0;
        for(d=1;d*d<=x;d++)
            if(x%d==0)
              if(d!=x/d)
                {nrd+=2;
                 sd += d%MOD+(x/d)%MOD;
                 sd %= MOD;
                }
              else
                {nrd+=1;
                 sd += d%MOD;
                 sd %= MOD;
                }
        fo<<nrd<<" "<<sd<<'\n';
    }
    return 0;
}
////var I bruta 20p
//#include <fstream>
//#define  MOD 9973;
//using namespace std;
//ifstream fi("ssnd.in");
//ofstream fo("ssnd.out");
//long long t,x,d,nrd,sd,i;
//int main()
//{
//    fi>>t;
//    for(i=1;i<=t;i++)
//    {
//        fi>>x;
//        nrd=0;sd=0;
//        for(d=1;d<=x;d++)
//            if(x%d==0)
//                {nrd++;
//                 sd += d;
//                 sd %= MOD;
//                }
//
//        fo<<nrd<<" "<<sd<<'\n';
//    }
//    return 0;
//}


//int P[M+1];
//bool pr[M+1];
////ciur
//    for(i=2;i<=M;i++)
//      if(pr[i]==0){
//        for(j=2*i;j<=M;j=j+i)pr[j]=1;
//      }
//    for(i=2;i<=M;i++)
//        if(pr[i]==0)P[++k]=i;
//    //for(i=1;i<=k;i++)fo<<P[i]<<" ";