解题思路:开始没看取值大小用数组存储 后来发现数据太多存不下 分析了一下题目 当某数为完全平方数时它一定不亮(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语言代码)浏览:2561 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:566 |
蓝桥杯历届试题-翻硬币 (C++代码)浏览:953 |
复数求和 (C语言代码)浏览:994 |
敲七 (C++代码)浏览:1119 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:501 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:630 |
剔除相关数 (C语言代码)浏览:1156 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:615 |
Manchester-字符串的输入输出处理浏览:12895 |