Cod sursa(job #1991409)

Utilizator HumikoPostu Alexandru Humiko Data 16 iunie 2017 17:52:41
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>

using namespace std;

bool frecv[1000000];
int ciur[1000000], cate;

int main()
{
    ifstream fin ("ssnd.in");
    ofstream fout ("ssnd.out");
    frecv[1]=1;
    for (int i=1;i<=1000;++i)
        if (!frecv[i])
            for (int j=i*2;j<=1000000;j+=i)
                frecv[j]=1;
    for (int i=1;i<=1000000;++i)
        if (!frecv[i])
            ciur[cate++]=i;
    int t;
    fin>>t;
    for (int i=1;i<=t;++i)
    {
        long long n, suma=1;
        fin>>n;
        int div=1;
        for (int j=0;j<cate && n>1;++j)
        {
            int k=0;
            long long putere=ciur[j];
            while (n%ciur[j]==0)
            {
                ++k;
                n/=ciur[j];
                putere*=ciur[j];
            }
            div*=(k+1);
            suma=suma*(putere-1)/(ciur[j]-1)%9973;
        }
        if (n==1)
            fout<<div<<" "<<suma<<"\n";
        else
            fout<<2<<" "<<(n+1)%9973<<"\n";
    }
}