验证一个数是不是优美的:设数位之和为sum,若sum mod 2 != 0,则不优美.否则考虑枚举这个数的每一位,将之前所有位任意相加产生的所有 数字和 和 当前位 的和塞到集合里,最终判断集合中是否存在sum/2即可,若暴力,复杂度是1+2+4+...,无法承受,所以可以压位. 然后对10^9分块,暴力处理每个块内的答案,然后打个表,对零散的部分暴力即可. #include<cstdio> using namespace std; const int table[]={0,376413,83…