Суть задачі полягає аж в тому, щоб порахувати кількість одиничних бітів в числі Х. Перший розвязок мав вигляд:
- #include <iostream>
- #include <sstream>
- #include <cstdio>
- #include <cstdlib>
- #include <cmath>
- #include <memory>
- #include <cctype>
- #include <string>
- #include <vector>
- #include <list>
- #include <queue>
- #include <deque>
- #include <stack>
- #include <map>
- #include <set>
- #include <algorithm>
- using namespace std;
- #define INF 2000000000
- #define FOR(i, a, b) for(i = a; i < b; i++)
- #define DFOR(i, a, b) for(i = a - 1; i >= b; i--)
- #define ALL(c) (c).begin(),(c).end()
- class Stick
- {
- public:
- int pieces(int x)
- {
- int res=0;
- while(x>0)
- {
- if(x&1)
- res++;
- x>>=1;
- }
- return res;
- }
- };
Багато букоф... Шаблон багато займає. А якщо викинути все лишнє? Буде отак:
- struct Stick { int pieces(int x){ return x == 0 ? 0 : pieces(x/2)+x%2; } };
...і все. Навіть інклудів не треба.
Немає коментарів:
Дописати коментар