ACM数论题做这种题的思路是什么?(如果能够给出代码就最好了)主要是数据量很大,一般的模拟会超时的.

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/06 01:31:22
ACM数论题做这种题的思路是什么?(如果能够给出代码就最好了)主要是数据量很大,一般的模拟会超时的.

ACM数论题做这种题的思路是什么?(如果能够给出代码就最好了)主要是数据量很大,一般的模拟会超时的.
ACM数论题

做这种题的思路是什么?(如果能够给出代码就最好了)

主要是数据量很大,一般的模拟会超时的.

ACM数论题做这种题的思路是什么?(如果能够给出代码就最好了)主要是数据量很大,一般的模拟会超时的.
既然是一直按到n 你可以这样想
这里先给你个结论 如果把1也算因子而且只算一次
那么只有完全平方数的因子个数是奇数
这个很容易证明 因为对于非完全平方数 用这个数除另一个因子必得到另一个因子 它并没有平方根因子 所以因子个数是偶数
对于完全平方数 它含有一个特殊的平方根因子 在算因子个数的时候平方根因子个数只被算了一个 所以多出来了一个因子 因子个数是奇数
那么对于这个问题就很好做了 被按奇数次的最后就是亮着的 所以从1到n枚举然后逐个判断是否有平方根因子 然后计数器累加就可以了 复杂度O(n) 给核心代码
int count=0;
for(int i=1;in为止 复杂度更低
int count=0;
for(int i=1;i*i