(Код)
Код:
#include <iostream.h>
#include <conio.h>
#include <math.h>
typedef long long ll;
void extended_euclid(ll a, ll b, ll *x, ll *y, ll *d)
{ ll q, r, x1, x2, y1, y2;
  if (b == 0) {
    *d = a, *x = 1, *y = 0;
    return;  }
  x2 = 1, x1 = 0, y2 = 0, y1 = 1;
  while (b > 0) {
    q = a / b, r = a - q * b;
    *x = x2 - q * x1, *y = y2 - q * y1;
    a = b, b = r;
    x2 = x1, x1 = *x, y2 = y1, y1 = *y;  }
  *d = a, *x = x2, *y = y2;}
  
ll inverse(ll a, ll n)
{  ll d, x, y;
  extended_euclid(a, n, &x, &y, &d);
  if (d == 1) if (x>0) return x; else return (x+n);
  return 0;}
int main(){
    ll i,j,k,n,t,l;                // j - простое число, 
    for (j=5;j<=97;j++)  {         // n - 100!(без множителей j) по модулю j,
        bool e=true;               // t - то, на что надо домножать
    for (i=2;i<=sqrt(j);i++) if (j%i==0) {e=false;break;}
    if (e) {
    n=1;
   ll p =(ll)(pow(j,100/j+100/(j*j)+100/(j*j*j)+100/(j*j*j*j)));   
  for (i=2;i<=100;i++) {
      k=i;
      while (k%j==0) k/=j;
      n=(n*k)%(p);}
   t=p-inverse(n,p);
   l=100*t/p;
   cout<<j<<" "<<t<<endl;
   
   if (100*t/p<4) cout<<"YES "<<j<<" "<<t<<endl;}}
    getch();
    return 0;
    }
Да вроде. А откуда вы взяли первое сравнение?
Я ещё и проверил:
  http://www.wolframalpha.com/input/?i=100%21%2F53+mod+53