1#define NG 0x100L 2 3unsigned long flg = 0; 4 5long sub (int n) 6{ 7 int a, b ; 8 9 if (n >= 2) 10 { 11 if (n % 2 == 0) 12 { 13 a = sub (n / 2); 14 15 return (a + 2 * sub (n / 2 - 1)) * a; 16 } 17 else 18 { 19 a = sub (n / 2 + 1); 20 b = sub (n / 2); 21 22 return a * a + b * b; 23 } 24 } 25 else 26 return (long) n; 27} 28 29int main (void) 30{ 31 if (sub (30) != 832040L) 32 flg |= NG; 33 34 if (flg) 35 abort (); 36 37 exit (0); 38} 39