解题思路:设一个数x的因数的个数为d(x),显然x要操作d(x)-1次,当d(x)为奇数,灯为暗,否则为亮。而因数个数一般都是偶数,除非这个数是平方数。显然,只需要求l和r之间的平方数个数就好了。
#include<bits/stdc++.h> using namespace std; typedef long long ll; int main( ) { ios::sync_with_stdio(false); cin.tie(0); ll n,l,r;cin>>n>>l>>r; cout<<r-l+1-((int)sqrt(r)-(int)sqrt(l-1)); return 0; }