|
|
back to boardCommon BoardWhy Compilation error #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; } |
|
|