Cod sursa(job #1377763)

Utilizator danysilas23Silas Daniel danysilas23 Data 6 martie 2015 01:04:27
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <bitset>
using namespace std;
const int L=1000500,mod=9973;
bitset <L> m;
int p[100000];

int main(){
  ifstream cin("ssnd.in");
  ofstream cout("ssnd.out");
  int T,i,j,k,q,r1;
  long long x,r2,s,t;
  p[1]=2;q=1;
  for (i=3;i<L;i+=2)if (!m[i]){p[++q]=i;for (j=3*i;j<L;j+=i<<1)m[j]=1;}
  //
  cin>>T;
  while (T--){
    cin>>x;
    j=r1=r2=1;
    while ((long long)p[j]*p[j]<=x){
      s=t=1;
      k=0;
      while (x%p[j]==0){
    x/=p[j]; k++;
    s=(s*p[j])%mod;
    t=(t+s)%mod; }
    r1*=k+1;
    r2=(r2*t)%mod;
    j++;
    }
    if (x>1){ r1<<=1; r2=(r2*(x+1))%mod;}
    cout<<r1<<" "<<r2<<endl;
  }
return 0;
}