【LGR-208-Div.3】T3 P11310 无穷的迭代器 题解
zhanghy123 · · 题解
结论:
- 当
k \ne 0 时,答案为k 的因子2 的数量+1 ; - 当
k=0 时无解。
思路/证明:
根据题意,设第
- 初始的
\lceil r\rceil 的值应为k+1 ; - 第一次迭代后
r_1=(k+\frac{1}{2})(k+1)=k^2+ \frac{3}{2}k+ \frac{1}{2} 。
所以当初始的
那么当
于是我们设这个整数为
不难想到,当
观察第一个式子,因为在得到答案前,
我们发现:
回到初始的
无解的情况很好想到:
代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll T,k;
int main()
{
cin>>T;
while(T--)
{
cin>>k;
if(k==0){
cout<<"NO!\n";
continue;
}
ll n=0;
while(!(k&1))//k除以几次2后变成奇数,就有几个因子2
{
k/=2;
n++;
}
cout<<n+1<<endl;
}
return 0;
}
提醒:不开long long 见祖宗。