Cod sursa(job #2085046)

Utilizator nicolaefilatNicolae Filat nicolaefilat Data 9 decembrie 2017 16:49:21
Problema GFact Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#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;
}