Cod sursa(job #3147323)

Utilizator mircea_007Mircea Rebengiuc mircea_007 Data 25 august 2023 17:42:09
Problema Suma si numarul divizorilor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <stdio.h>

#define magic_sauce inline __attribute__((always_inline))
using ll = long long;

// jur ca daca testele sunt facute sa pice chestia asta vin personal sa le livrez o palma peste fata

const int MOD = 9973;

magic_sauce int mmod( int a, int b ){ return a * b % MOD; }

void test( FILE *fin, FILE *fout ){
  ll n;
  int ndiv = 1, d, sdiv = 1, exp, pp, spp;

  fscanf( fin, "%lld", &n );

  d = 2;
  while( ((ll)d * d) <= n ){
    if( n % d == 0 ){
      exp = 0;
      spp = pp = 1;
      while( n % d == 0 ){
        exp++;
        pp = mmod( pp, d );
        spp += pp;

        n /= d;
      }

      spp %= MOD;

      ndiv *= (1 + exp);
      sdiv = mmod( sdiv, spp );
    }

    d++;
  }

  if( n > 1 ){
    ndiv *= 2;
    sdiv = mmod( sdiv, (n % MOD) + 1 );
  }

  fprintf( fout, "%d %d\n", ndiv, sdiv );
}

int main(){
  FILE *fin  = fopen( "ssnd.in", "r" );
  FILE *fout = fopen( "ssnd.out", "w" );

  int t;

  for( fscanf( fin, "%d", &t ) ; t-- ; )
    test( fin, fout );

  fclose( fin );
  fclose( fout );
  return 0;
}