凌艺樽 • 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;
}
评论: