Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
50题,纪念一下。。。。。。#include <iostream> #include <vector> #include <algorithm> #include <string> #include <bitset> using namespace std; #define N 2002 void trim(string &s) { int index = 0; if( !s.empty()) { while( (index = s.find(' ',index)) != string::npos) { s.erase(index,1); } } } int main() { int iTNum = 0; string sTNum; getline(cin,sTNum); iTNum = atoi(sTNum.c_str()); // cout<<"sTNum is "<<sTNum<<endl; // cout<<"iTNum is "<<iTNum<<endl; for(int i = 0; i<iTNum; i++) { // cout<<"i is"<<i<<endl; string s1; getline(cin,s1) ; int index = s1.find(" "); string sTemp = s1.substr(0,index); int iFxDegree = atoi(sTemp.c_str()); s1 = s1.substr(index); trim(s1); // cout<<" iFxDegree is " <<iFxDegree <<" s1 is " <<s1<<" index is " <<index<<endl; bitset<N>Fx(s1); // cout<<" Fx is "<<Fx<<endl; string s2; getline(cin,s2) ; index = s2.find(" "); sTemp = s2.substr(0,index); int iGxDegree = atoi(sTemp.c_str()); s2 = s2.substr(index); trim(s2); // cout<<" iGxDegree is " <<iGxDegree <<" s2 is " <<s2<<" index is "<<index<<endl; bitset<N>Gx(s2); // cout<<" Gx is "<<Gx<<endl; string s3; getline(cin,s3) ; index = s3.find(" "); sTemp = s3.substr(0,index); int iHxDegree = atoi(sTemp.c_str()); s3 = s3.substr(index); trim(s3); // cout<<" iHxDegree is " <<iHxDegree <<" s3 is " <<s3<<" index is "<<index<<endl; bitset<N>Hx(s3); // cout<<" Hx is "<<Hx<<endl; bitset<N>Multi; int iFlag = 0; for(int j = 0; j<iGxDegree; j++) { // cout<<" j is "<<j <<" Gx[j] is "<<Gx[j]<<endl; if(1==Gx[j]) { bitset<N>bTemp; bTemp = (Fx<<j); // cout<<"bTemp is " <<bTemp<<endl; if(0 == iFlag) { Multi = bTemp; iFlag = 1; }else { Multi = (Multi ^ bTemp); } // cout<<"Multi is " <<Multi<<endl; } } int iMultiDegree = 0; for(int j = N -1; j>=0; j--) { if(Multi.test(j)) { iMultiDegree = j +1; break; } } //cout<<" iMultiDegree is "<<iMultiDegree<<endl; iFlag = 0; while(1) { // cout<<" iMultiDegree is "<<iMultiDegree<<" iHxDegree is "<<iHxDegree <<endl; if(iMultiDegree < iHxDegree ) { // cout<<" the endl"<<endl; break; } int iDiff = iMultiDegree - iHxDegree; // cout<<"iDiff is " <<iDiff<<endl; bitset<N>bTemp; bTemp = (Hx<<iDiff); // cout<<"bTemp is " <<bTemp<<endl; Multi = (Multi ^ bTemp); // cout<<"Multi is " <<Multi<<endl; for(int j = N -1; j>=0; j--) { if(Multi.test(j)) { iMultiDegree = j +1; break; } } } cout<<iMultiDegree; for(int j = iMultiDegree -1; j>=0; j--) { cout<<" "<<Multi[j]; } cout<<endl; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator