ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Общий форум

Why Compilation error
Послано Leonid Chistov 31 окт 2002 21:59

#include <iostream.h>
#include <math.h>





//vars
int min(int X1,int X2){if(X1>X2) return X2;else return X1;}
int max(int X1,int X2){if(X1>X2) return X1;else return X2;}


 class TN{public:
          short int *Ar;

          int Length;

          TN(){Ar = new short int[200];for(int s=0;s<200;s++)Ar[s]
=0;Length=0;}
          //+= -------------------------------------------------------
--
           void In(TN,TN);


         };

short int* copy2(short int A1[200],short int A2[200]){memcpy
(A1,A2,sizeof(A1));return A1;}

  TN Quadrat(TN x);


int main()
{

  int N,S;TN*M1; TN*M2;
 //0
 long int A,B;

 cin>>N;cin>>S; S/=2;
 if(S>N*9){cout<<0;return 0;}
 //1
 M1 = new TN[N+1];
 M2 = new TN[N+1];
 //2
 A = min(9,S);


  for(int s=1;s<N+1;s++){M1[s].Ar[199]=s;M1[s].Length=1;}

 //3
 for(int i=2;i<=S;i++)
 {
  delete M2;
  M2 = new TN[N+1];
  M2[1].Ar[199]=1;
  M2[1].Length=1;

  for(int s1=2;s1<N+1;s1++)
  {
   M2[s1].In(M2[s1-1],M1[s1]);
  }

  for(int s=0;s<N+1;s++)
  {
   for(int s1=0;s1<200;s1++)
   {
    M1[s].Ar[s1]=M2[s].Ar[s1];

   }
     M1[s].Length=M2[s].Length;
  }


 }
 //4

  M1[N]= Quadrat(M1[N]);
  int RLength=M1[N].Length;
  for(int s= 200-M1[N].Length;s<200;s++){if(M1[N].Ar[s]==0)RLength-
=1;else break;}
for(int s=200-RLength;s<200;s++){cout<<M1[N].Ar[s];}


    return 0;
}
//realiz


void TN::In(TN O2,TN O1){int K1=0,L=0;

                       for(int s=199;s>=0;s--){

                                                 Ar[s] = fmod(K1+O1.Ar
[s]+O2.Ar[s],10);
                                                 K1 = (K1+O1.Ar[s]
+O2.Ar[s]-Ar[s])/10;
                                                 L+=1;
                                                 if(K1==0 &&
L>=O2.Length && L>=O1.Length)break;
                                                }
                       Length=L;
                      }



TN Quadrat(TN x){
                    short*Use;
                    Use = new short[x.Length+1];
                    for(int s=200-x.Length;s<200;s++)Use[s-
200+x.Length+1]=x.Ar[s];
                      short* Answer;
                     Answer = new short[2*x.Length+1];
                     for(int s=1;s<2*x.Length+1;s++)Answer[s]=0;
                     int j=x.Length; int i,k,t;
                          while(j>0)
                                {
                                 i=x.Length; k=0;
                                 while(i>=0)
                                 {
                                   if(i!=0)
                                   t=Use[i]*Use[j]+Answer[i+j]+k;
                                   Answer[i+j]=fmod(t,10);
                                   k=(t-fmod(t,10))/10;
                                   Answer[j]=k;
                                   i-=1;
                                  }
                                  j-=1;
                                 }

                                 for(int s=200-2*x.Length;s<200;s++)
                                 {
                                  x.Ar[s]=Answer[s-200+2*x.Length+1];

                                 }
                                 x.Length*=2;
                                 //
                                 return x;



                  }