You are viewing a single comment's thread. Return to all comments →
this is a long code but it works. :-)
stack stk; void reversed_binary(){} template void reversed_binary(int b, Digits... digits){ stk.push(b); reversed_binary(digits...); }
template int reversed_binary_value(){ reversed_binary(digits...); int sum = 0; if(stk.size() > 0){ int pos = stk.size() - 1; if(pos == 0) return 1 * stk.top(); long long prd = 1; for(int count = pos; count > 0; --count) prd *= 2; for(; pos > 0; --pos){ int b = stk.top(); prd /= 2; sum += b * prd; stk.pop(); } } return sum; }
Seems like cookies are disabled on this browser, please enable them to open this website
C++ Variadics
You are viewing a single comment's thread. Return to all comments →
this is a long code but it works. :-)
stack stk; void reversed_binary(){} template void reversed_binary(int b, Digits... digits){ stk.push(b); reversed_binary(digits...);
}
template int reversed_binary_value(){ reversed_binary(digits...); int sum = 0; if(stk.size() > 0){ int pos = stk.size() - 1; if(pos == 0) return 1 * stk.top(); long long prd = 1; for(int count = pos; count > 0; --count) prd *= 2; for(; pos > 0; --pos){ int b = stk.top(); prd /= 2; sum += b * prd; stk.pop(); } } return sum; }