题解(附思路)

凌艺樽  •  4个月前


我们先分析样例:

在10个灯中,最后亮着的灯有:1,4,9号灯;

在30个灯中,最后亮着的灯有:1,4,9,16,25号灯;

在100个灯中,最后亮着的灯有:1,4,9,16,25,36...64,81,100号灯;

其实,每盏灯被拉过的次数就是它所有的因子。比如10号灯,拉过它的只有编号是1,2,5,10的人。

再根据因数是成双出现的,而每拉两次灯又相当于没拉,我们就可以得出结论:只有奇数个因子的数(完全平方数)最后才会亮着

但是我只给部分分题解,hhh~~~

会超时的题解:

//非满分题解
#include <bits/stdc++.h>
using namespace std;
int n,ans;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		if((int)sqrt(i)*(int)sqrt(i)==i)
		{
			ans++;
		}
	}
	cout<<ans;
	return 0;
}

评论: