luogu P1876开灯

开灯题面

这个题我一开始的思路是用模拟来做,但是看到了n的数据范围以后,我发现绝对不行啊,数据范围太大,有可能会超时,而且也开不了数组,怎么办呢?看了一下,原来是数学题( ⊙ o ⊙ )啊!

说一个重要的事,由于第一个人把灯全部打开,所以有奇数个因子编号的灯会开着,详见为什么完全平方数有奇数个因数

上代码:

#include<iostream>
#include<cstdio>

#include<cmath>
using namespace std;

int main()
{
	int n;
	scanf("%d",&n);
	for(int i=1;i<=sqrt(n);i++)
	{
		cout<<i*i<<" ";
	}
	return 0;
}

  O(∩_∩)O哈哈~^_^

猜你喜欢

转载自www.cnblogs.com/xrj1229/p/9227367.html
今日推荐