Написать такую функцию f, что: f(f(n)) == -n
У кого какие идеи?
Вот самый простой вариант на мой взгляд (правда это не совсем функция):
#define f(n) 0-n
template<typename T>
struct param
{
   T n;
   param(T t) : n(t) {}
};
template<typename T>
param<T> f(T n)
{
   T a = (1&(n^(n>>1)));
   n ^= (a ? 0xAA : 0x55);
   return param<T>(n);
}
template<typename T>
T f(param<T> n)
{
   return f(n.n).n + 1;
}
Этот код пока работает только для char.
Так было намного быстрее прогонять полный тест))
Нетрудно модифицировать его для остальных типов.
Читать дальше
![[k06a]'s Blog](http://2.bp.blogspot.com/_sKX69jB94Rc/Sj9P7GF8GoI/AAAAAAAAEQs/7Phy5O2ZIWs/S1600-R/%D0%A8%D0%B8%D1%80%D0%BE%D0%BA%D0%B8%D0%B9+%D0%BB%D0%BE%D0%B3%D0%BE%D1%82%D0%B8%D0%BF+-+Bleach.png) 
 
