Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Template metaprogramming
- #include <iostream>
- using namespace std;
- template<size_t N, size_t M>
- struct KozosBitekSzama {
- static const size_t value = (N%2 == M%2) ? 1+KozosBitekSzama<N/2,M/2>::value : 0+KozosBitekSzama<N/2,M/2>::value;
- };
- template<int N>
- struct KozosBitekSzama<N,0> {
- static const size_t value = (N%2==0)?1:0;
- };
- template<int N>
- struct KozosBitekSzama<0,N> {
- static const size_t value = (N%2==0)?1:0;
- };
- template<int N>
- struct KozosBitekSzama<N,1> {
- static const size_t value = (N%2==0)?0:1;
- };
- template<int N>
- struct KozosBitekSzama<1,N> {
- static const size_t value = (N%2==0)?0:1;
- };
- template<>
- struct KozosBitekSzama<1,1> {
- static const size_t value = 1;
- };
- template<>
- struct KozosBitekSzama<0,0> {
- static const size_t value = 1;
- };
- template<int N, int M>
- struct Hatvany {
- static const bool value = (M%N == 0) ? Hatvany<N,(M/N)>::value : false;
- };
- template<int N>
- struct Hatvany<N,N> {
- static const bool value = true;
- };
- template<>
- struct Hatvany<1,1> {
- static const bool value = true;
- };
- template<>
- struct Hatvany<0,0> {
- static const bool value = false;
- };
- template<int N>
- struct Hatvany<1,N> {
- static const bool value = false;
- };
- template<int N>
- struct Hatvany<N,1> {
- static const bool value = (N==0)? false:true;
- };
- template<int N>
- struct Hatvany<N,0> {
- static const bool value = false;
- };
- int main() {
- cout << KozosBitekSzama<5, 3>::value << endl;
- cout << KozosBitekSzama<0, 0>::value << endl;
- cout << KozosBitekSzama<1, 1>::value << endl;
- cout << KozosBitekSzama<32, 0>::value << endl;
- cout << KozosBitekSzama<30, 31>::value << endl;
- cout << KozosBitekSzama<32, 31>::value << endl;
- cout << KozosBitekSzama<10, 16>::value << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement