A 不知大家有没有发现一个小细节,这道题所有的数字都和 2 有关。 直线上第 $i$ 个格子所代表的米粒数在二进制下表示为一个(自右往左)第 $i$ 位为1,其余位为0的一个二进制数。 考虑数 $s$ 在二进制下的表达方式,其某一位为1则判断一个该位是否存在米粒。 #include<cstdio> #define LL long long const int MAXN=68; bool vis[MAXN]; int main() { int n,k; LL s; scanf("%d%d%lld",&n,&k,&...