Codeforces Round #195 (Div. 2) 少部分题解

  太困了于是没做...第二天看题蘑菇题居多就只切了简单的两个...

A:直接输出...

int main()
{
    //FIN;
    //FOUT;
    int x,y;
    cin>>x>>y;
    int q = abs(abs(x) + abs(y));
    if(x > 0 && y > 0)
        cout<<"0 "<<q<<" "<<q<<" 0"<<endl;
    if(x < 0 && y > 0)
        cout<<-q<<" 0"<<" 0 "<<q<<endl;
    if(x < 0 && y < 0)
        cout<<-q<<" 0 "<<"0 "<<-q<<endl;
    if(x > 0 && y < 0)
        cout<<"0 "<<-q<<" "<<q<<" 0"<<endl;
    return 0;
}

C:求做&以后 mod2k=0 且k最大的子序列

枚举右移位数 , 出现能整除2k的就输出...

vector<int> v;
int main()
{
    //FIN;
    //FOUT;
    int n,a;
    cin>>n;
    for(int i = 0 ; i < n ; i++) {
        cin>>a;
        v.push_back(a);
    }
    int p = 30,m = -INF;
    for(int i = 30 ; i >= 0; i--){
        vector<int> s;
        for(int j = 0 ; j < v.size() ; j++){
            if((v[j]>>i) & 1){
                s.push_back(v[j]);
            }
        }
        if(s.size() == 0) continue;
        int sum = s[0];
        for(int j = 1 ; j < s.size() ; j++){
            sum = sum & s[j];
        }
        if(sum % (1<<i) == 0){
            cout<<s.size()<<endl;
            for(int j = 0 ; j < s.size() ; j++){
                cout<<s[j]<<" ";
            }
            break;
        }
    }
    return 0;
}

 

posted @ 2013-08-10 19:33  Felix_F  阅读(211)  评论(0编辑  收藏  举报