专栏文章

【LGR-208-Div.3】T3 P11310 无穷的迭代器 题解

P11310题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mir12iv9
此快照首次捕获于
2025/12/04 14:01
3 个月前
此快照最后确认于
2025/12/04 14:01
3 个月前
查看原文

结论:

  • k0k \ne 0 时,答案为 kk 的因子 22 的数量 +1+1
  • k=0k=0 时无解。

思路/证明:

根据题意,设第 nn 次迭代后的 rr 值为 rnr_n,则不难想到以下结论:
  1. 初始的 r\lceil r\rceil 的值应为 k+1k+1
  2. 第一次迭代后 r1=(k+12)(k+1)=k2+32k+12r_1=(k+\frac{1}{2})(k+1)=k^2+ \frac{3}{2}k+ \frac{1}{2}
所以当初始的 kk 就是奇数时,原式的值为整数,即只需一次迭代即可使 rr 成为整数。
那么当 kk 为偶数时,原式中的 32k\frac{3}{2}k 一项为整数;又因为 k2k^2 必定为整数,所以原式的值依旧可以写成“一个整数 +12+\frac{1}{2}”的形式。这样就可以继续使用结论二中的式子继续往后推。
于是我们设这个整数为 k1k_1,并将 nn 次迭代后得到结果的整数部分设为 knk_n。则转移式为: kn=kn12+32kn1k_n=k_{n-1}^2+ \frac{3}{2}k_{n-1} rn=kn+12r_n=k_n+\frac{1}{2}
不难想到,当 kn1k_{n-1} 为奇数,且 rn1r_{n-1} 值依旧不是整数时,rnr_n 的值即为整数,nn 就是答案。
观察第一个式子,因为在得到答案前,kn1k_{n-1} 一直是偶数,故该式子的奇偶性仅取决于 32kn1\frac{3}{2}k_{n-1} 的奇偶性。若它的值为奇数,说明 kn1k_{n-1} 的因子 22 的数量仅为 11
我们发现:32kn1\frac{3}{2}k_{n-1} 的因子 22 的数量比 kn1k_{n-1}11。也就是,第次 nn 迭代会使 knk_n 的因子 22 的数量 1-1
回到初始的 kk,思路就出来了。若 kkaa 个因子 22,则 kak_a 为奇数,ra+1r_{a+1} 的值为整数,答案就是 a+1a+1
无解的情况很好想到:k=0k=0,则 rr 永远等于 12\frac{1}{2},不可能变成整数。

代码

CPP
#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 见祖宗。

评论

0 条评论,欢迎与作者交流。

正在加载评论...