社区讨论
为什么枚举到根号n还是超时啊?
P14826踩踩标参与者 7已保存回复 14
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 14 条
- 当前快照
- 1 份
- 快照标识符
- @mjh2n5ye
- 此快照首次捕获于
- 2025/12/22 19:27 2 个月前
- 此快照最后确认于
- 2025/12/25 10:40 2 个月前
CPP
#include <iostream>
#include <cmath>
using namespace std;
typedef long long ll;
ll n,t,k;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>t;
while(t--){
ll ans = 4*1e18;
cin>>n>>k;
if(k == 0){
cout<<0<<'\n';
continue;
}
ll q = sqrt(n);
if(q*q == n){
cout<<min(q+q,k*n)<<'\n';
continue;
}
for(int i = 1; i*i <= n; i++){
ll j = n/i;
ll c = n-i*j;
//cout<<i<<" "<<j<<endl;
ans = min(ans,i+j+k*c);
}
cout<<min(ans,k*n)<<'\n';
}
return 0;
}
回复
共 14 条回复,欢迎继续交流。
正在加载回复...