Cod sursa(job #2529693)

Utilizator betybety bety bety Data 23 ianuarie 2020 20:32:20
Problema Suma si numarul divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include <fstream>
#include <vector>
#define mod 9973
using namespace std;
ifstream cin("ssnd.in");
ofstream cout("ssnd.out");
const long long lim=1000000;
bool v[lim+5];
vector<long long> primes;
void ciur()
{
    for(long long i=2;i<=lim;++i)
    if(v[i]==0)
    {
        primes.push_back(i);
        for(long long j=2*i;j<=lim;j+=i)
            v[j]=1;
    }
}
int main()
{
    int t;
    long long n;
    ciur();
    cin>>t;
    for(int w=1;w<=t;++w)
    {
        long long nrdiv=1;
        long long prod=1,prodjos=1;
        cin>>n;
        for(long long i=0;i<primes.size() and n>1;++i)
        if(n%primes[i]==0)
        {
            long long exp=0,partial=1;
            while(n%primes[i]==0)
                ++exp,n/=primes[i],partial=(partial*(primes[i]%mod))%mod;
            partial=(partial*(primes[i]%mod))%mod;
            partial=(partial+mod-1)%mod;
            prod=(prod*partial)%mod;
            prodjos=(prodjos*((primes[i]+mod-1)%mod))%mod;
            nrdiv*=exp+1;
        }
        cout<<nrdiv<<' ';
        bool ok=0;
        for(long long i=0;i<mod and ok==0;++i)
            if((i*prodjos)%mod==prod)
            cout<<i<<'\n',ok=1;
    }
    return 0;
}