fork download
#include<stdio.h>
#include<cmath>
#include<vector>

using namespace std;
vector<int> vec2;
vector<int> vec1;

int main()
{
    int t, n ,i, s, j, m ;
    vec1.reserve(31);
    vec2.reserve(31);
    scanf("%d",&t);
    for(i=30;i>=0;i++){
        vec1[30-i] = pow(2,i);
    }
    for(i=1; i<=t; i++) {
        s = 0;
        scanf("%d",&n);
        for(j=0;j<31;j++) {
            if(n>=vec1[j]) {
                vec2[j] = 1;
                n = n - vec1[j];
            }
            else{
                vec2[j] = 0;
            }
        }
        m = 1;
        for(j=30;m==1;j--) {
            if(vec2[j]==1 && vec2[j-1]==0) {
                m = 0;
            }
        }
        vec2[j] = 0;
        vec2[j-1] = 1;
        for(j=0; j<31; j++){
            if(vec2[j]==1) s = s + vec1[j];
        }

        printf("Case %d: %d\n",i,s);
    }
    return 0;
}
Runtime error #stdin #stdout 0s 3272KB
stdin
Standard input is empty
stdout
Standard output is empty