解题思路:开始没看取值大小用数组存储 后来发现数据太多存不下 分析了一下题目 当某数为完全平方数时它一定不亮(1除外)因为完全平方数的约数数量为奇数但是1又不能改变开关 所以因数数量恒为偶数,所以问题就转换为在区间内有多少个非完全平方数,对于一个数,从1到n有的完全平方数有sqrt(n)个,则在区间L-R中共有sqrt(R)-sqrt(L)个完全平方数,非完全平方数:R-L+1-(sqrt(R)-sqrt(L))
注意事项: sqrt开根公式前一定要强制转化
参考代码:
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
long long int N, L, R, sum = 0;
cin>>N>>L>>R;
sum = R - L + 1 -(long long int)sqrt(R)+ (long long int)sqrt(L);
cout<<sum;
}
0.0分
3 人评分
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:940 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:765 |
C语言程序设计教程(第三版)课后习题6.11 (C语言代码)浏览:2080 |
C语言训练-数字母 (C语言代码)浏览:649 |
WU-输出九九乘法表 (C++代码)浏览:1667 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:604 |
字符逆序 (C语言代码)浏览:458 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:504 |
时间转换 (C语言代码)浏览:627 |
1052题解(链表操作)浏览:661 |