#include #include #include #include #include using namespace std; class Checksums { int N; static const int maxNfactor = 3; int **M; int rank; protected: int K; int maxN; private: void swap(int i, int j); void doxor(int i, int j); void cleanlast(); void cleanall(); void gaussian(); int uselast(); void newp(int *p); void newprand(); void newpdegree(int q); public: Checksums(int K_); ~Checksums(); int rcvpacket(); int rcvpacket(int q); int rcvpacket(int *p); void pr(); int sample(); }; class ChecksumsPerf: public Checksums { int *prob; public: ChecksumsPerf(int K_); ~ChecksumsPerf(); void rate(int T); }; void randseed(); int main() { randseed(); ChecksumsPerf c(20); c.rate(100003); } void ChecksumsPerf::rate(int T) { for(int i=0;i<=maxN-K;i++) prob[i]=0; for(int t=0;t=N) return; swap(rank,i); rank++; cleanall(); gaussian(); } void Checksums::cleanall() { for(int i=rank;i=0;i--) { j++; for(;M[N-1][j];j++) ; } M[N-1][j]=1; } } void Checksums::newprand() { N++; for(int i=0;i