Pagini recente » Cod sursa (job #2706853) | Cod sursa (job #2561840) | Cod sursa (job #2212148) | Cod sursa (job #2546564) | Cod sursa (job #2085046)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream in("punga.in");
ofstream out("punga.out");
uint64_t t,k,lungime,latime;
bool validare(int n,int x,int sol_sum){
uint64_t sum = x+n/x;
if(n % x !=0)
sum++;
if(sum == sol_sum)
return true;
return false;
}
void cautbin(long long n){
long long int radical = sqrt(n);
long long int sum = n/radical+radical;
if(n%radical != 0)
sum++;
int aux = log2(radical);
int pas = 1<<aux,r = 0;
while(pas){
if(validare(n,r + pas,sum) == false && r + pas <= radical)
r += pas;
pas/=2;
}
latime = r+1;
lungime = n/latime;
if(n % latime != 0)
lungime ++;
}
int main()
{
in>>t;
for(int i = 0; i < t; i ++){
in>>k;
cautbin(k);
out<<latime<<" "<<lungime<<"\n";
}
return 0;
}