题解:P10900 [蓝桥杯 2024 省 C] 数字诗意
__galaxy_1202__ · · 题解
解题思路:
由于连续自然数的排列是一个等差数列,而一个长度为奇数的等差数列能被转换为相同的奇数个自然数。
例如:
那么,这个被分拆的数就得满足它等于一个奇数乘一个任意正整数。
反过来讲,不能被分拆为连续自然数的和的数要满足它没有奇因子,也就是
由于
好吧好像还是很抽象,所以详见代码....
CODE:
#include <iostream>
#include <cmath>
using namespace std;
long long n, a, ans;
int main()
{
cin >> n;
while (n--)
{
cin >> a;
for (int i = 1; i <= 60; i++)
{
if (a == pow(2, i))
{
++ans;
break;
}
}
}
cout << ans;
return 0;
}