这道题的数据范围为 k≤64k \le 64k≤64,可能会爆 unsigned long long,因此如果不开 __int128 一定要加上以下特判才能过:
unsigned long long
__int128
unsigned long long res=1; if (k!=64) res<<=k; else res=0; //(1ull<<64)的结果是1不是0 if (res-n==0 && k==64) printf("18446744073709551616"); //当res=0ull,k=64时应输出2^64,但是ull无法输出这个数,因此直接打字符串 else printf("%llu",res-n);