开灯题面
这个题我一开始的思路是用模拟来做,但是看到了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哈哈~^_^