看到部分OIer不得要领,分享一下吧
本题当需要2^64的时候,分两种情况:
一是n==0,直接输出2^64,用系统自带的计算器算一下,硬编码字符串输出:
printf("18446744073709551616\n");
二是n!=0的时候,需要2^64减去n,unsigned long long 最大能表示2^64-1,所以我们用这个最大值先减n,再加上1就行了,因为n至少是1,保证不会溢出。所有数据类型的最大值都在头文件climits里,不要自己写
#include <climits>
printf("%llu", ULLONG_MAX - n + 1);