您的位置:首页 > 编程语言

csdn首页高校编程挑战金色十月线上编程比赛第二题:解密

2014-11-02 22:48 344 查看
#include<iostream>

#include<fstream>

using namespace std;

const int maxsize1=100000;

const int maxsize2=1000000000;

class devide

{

public:

    devide(){}

    void getdata(int a[],int n);

    int DA();

private:

    int data[maxsize1];

    int length;

};

void devide::getdata(int a[],int n)

{

    if(n<1||n>maxsize2) throw"length error";

    if(n!=(sizeof(a)/sizeof(int))) throw"length error";

    for(int j=0;j<=n;j++)

    {

        if(a[j]<1||a[j]>maxsize2)

            throw"data error";

        data[j]=a[j];

    }

    length=n;

}

int devide::DA()

{

    int b[length][8],d[length],Max=0;

    for(int j=0;j<length;j++)

    {

        int x=data[j],i=0,count=0;

        while(x)

        {

            b[j][i]=x%2;

            x/=2;

            if(b[j][i]==1)

                count++;

            i++;

        }

        d[j]=count;

        if(count>Max)

            Max=count;

    }

    for(int j=0;j<length;j++)

        if(d[j]==Max)

        {

            return data[j];

        }

}

int main()

{

    int n,count2=0;

    while(1)

    {

        devide d1;

        cin>>n;

        int a[maxsize1],i=0,j;

        while(cin>>j,getchar()!='\n') {a[i]=j;i++;}

        a[n-1]=j;

        try{d1.getdata(a,n);

       }

       catch(char *s){cout<<s<<endl;}

       int x=d1.DA();

       ofstream out;

       out.open("Text.txt",ios::out | ios_base::in);

       if(!out)

       {

           cout<<"can't open file!"<<endl;

           return 0;

       }

       out.seekp(count2);

       cout<<count2+1<<"  "<<x<<endl;

       out<<count2+1<<" "<<x<<"\n";

       count2++;

       out.close();

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: