【每周例题】蓝桥杯 C++ 生物芯片
生物芯片
题目



题目分析
·1.下面是亮灯规律,剩下的以此类推:我们可以看到,不亮灯的都是n的平方

2.所以亮灯的数目=该区间内所有灯的数量-不亮灯的数目(简而言之,所有不亮灯的号码开方后都是整数)
代码
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
long long int n, l, r;
cin >> n >> l >> r;
long long int count = r - l + 1;//区域内所有灯的数目
long long int ll = sqrt(l), rr = sqrt(r);//求出区间两端的开方后的数
if (ll * ll != l || ll == 1)//如果L不是完全平方数或者L是1
{
count -= rr - ll;
}
else// 如果l是完全平方数,那么不应该包括l本身,所以从l的下一个完全平方数开始计数
{
count -= rr - ll - 1;
}
// 输出在区间[l, r]内,不是完全平方数但能被完全平方数(除了1)整除的数的数量
cout << count;
return 0;
}

浙公网安备 33010602011771号