B:
很容易发现只有因数个数为偶数的灯泡是亮的。所以只有完全平方数的因数是奇数个。
实现上可以二分。
但是sqrt是double的必须开sqrtl才是long double的,才能满足这题long long的数据范围。人给我卡傻了。哈哈。
#include<bits/stdc++.h>
using namespace std;
#define int unsigned long long
void solve(){
int n,k;cin>>k;
int l=1,r=1e19,mid=(l+r)/2;
while(l<r){
if(mid-floor(sqrtl(mid))<k)l=mid+1;
else r=mid;
mid=(l+r)/2;
//if(mid<10)cout<<mid<<' '<<mid-floor(sqrt(mid))<<endl;
}
cout<<mid<<endl;
}
signed main(){
int t=1;cin>>t;while(t--){
solve();
}
}
标签:976,int,Codeforces,long,Div,Round
From: https://www.cnblogs.com/lyrrr/p/18441262