Rezultati

Up. imeNalogaJezikRezultatČas oddaje
vlakec-tomaz-in-ekipa-raketa-2019 Kvadrati C++ 0/100Prekoračen čas (TLE) 09. maj '19 @ 19:36

Test Točke Porabljen spomin Porabljen čas Status
#1 [več] 0/2 2,844 MiB 3,031 s Prekoračen čas
#2 [več] 0/2 2,809 MiB 3,025 s Prekoračen čas
#3 [več] 0/2 2,813 MiB 3,019 s Prekoračen čas
#4 [več] 0/2 2,813 MiB 3,031 s Prekoračen čas
#5 [več] 0/2 2,813 MiB 3,037 s Prekoračen čas
#6 [več] 0/2 2,816 MiB 3,043 s Prekoračen čas
#7 [več] 0/2 2,813 MiB 3,031 s Prekoračen čas
#8 [več] 0/2 2,813 MiB 3,037 s Prekoračen čas
#9 [več] 0/3 2,813 MiB 3,031 s Prekoračen čas
#10 [več] 0/3 2,844 MiB 3,037 s Prekoračen čas
#11 [več] 0/3 2,805 MiB 3,037 s Prekoračen čas
#12 [več] 0/3 2,844 MiB 3,037 s Prekoračen čas
#13 [več] 0/3 2,809 MiB 3,025 s Prekoračen čas
#14 [več] 0/3 2,840 MiB 3,037 s Prekoračen čas
#15 [več] 0/3 2,844 MiB 3,043 s Prekoračen čas
#16 [več] 0/3 2,813 MiB 3,031 s Prekoračen čas
#17 [več] 0/3 2,813 MiB 3,031 s Prekoračen čas
#18 [več] 0/3 2,836 MiB 3,013 s Prekoračen čas
#19 [več] 0/3 2,844 MiB 3,049 s Prekoračen čas
#20 [več] 0/3 2,844 MiB 3,037 s Prekoračen čas
#21 [več] 0/3 2,813 MiB 3,031 s Prekoračen čas
#22 [več] 0/3 2,813 MiB 3,031 s Prekoračen čas
#23 [več] 0/3 2,813 MiB 3,037 s Prekoračen čas
#24 [več] 0/3 2,809 MiB 3,025 s Prekoračen čas
#25 [več] 0/3 2,844 MiB 3,049 s Prekoračen čas
#26 [več] 0/3 2,840 MiB 3,025 s Prekoračen čas
#27 [več] 0/3 2,844 MiB 3,025 s Prekoračen čas
#28 [več] 0/3 2,809 MiB 3,025 s Prekoračen čas
#29 [več] 0/3 2,805 MiB 3,037 s Prekoračen čas
#30 [več] 0/3 2,844 MiB 3,037 s Prekoračen čas
#31 [več] 3/3 3,004 MiB 0,004 s OK
#32 [več] 3/3 3,000 MiB 0,000 s OK
#33 [več] 3/3 3,156 MiB 0,000 s OK
#34 [več] 3/3 3,004 MiB 0,000 s OK
#35 [več] 0/3 2,813 MiB 3,031 s Prekoračen čas
#36 [več] 0/3 2,813 MiB 3,037 s Prekoračen čas

Ocenjevani program (kvadrati.cc):
#include <iostream>
#include <cmath>
#include <bitset>
using namespace std;

unsigned int prestej(unsigned long long a);
unsigned int velikost(unsigned long long a);

int generate_to = 2<<16-1;

int main(){
    //unsigned int enke[generate_to];
    unsigned long long stevilo, max=0, min=0, min_koren, max_koren, stevilo_enk, stevilo_n, rez=0;
    int i, j, k;
    double min_double_koren, max_double_koren;
    cin >> stevilo;

    stevilo_enk = prestej(stevilo);
    stevilo_n = velikost(stevilo);

    // MAX
    j=0;
    for(i=0;i<stevilo_n;i++){
        if(j<stevilo_enk){max=(max<<1)+1; j++;}
        else max=max<<1;
    }
    // MIN
    for(i=0;i<stevilo_enk-1;i++) min=(min<<1)+1;
    min=min|(1<<(stevilo_n-1));

    // DOUBLE
    min_double_koren = sqrt(min);
    max_double_koren = sqrt(max);

    min_koren = min_double_koren; max_koren = max_double_koren;
    if(min_double_koren > (double) min_koren) min_koren++;
    // if(max_double_koren > (double) max_koren) max_koren++;

    // CHECK ENKE
    unsigned long long a, b;
    for(a=min_koren; a<=max_koren; a++){
        b = a*a;
        if(prestej(b)==stevilo_enk) rez++;
    }

    //cout << prestej(stevilo) << " " << velikost(stevilo) << endl;
    //cout << bitset<32>(min) << " " << bitset<32>(max) << endl;
    cout << rez << endl;
    return 0;
}

unsigned int prestej(unsigned long long a){
    short enke=0;
    while(a>0){
        if(0x01 & a)enke++;
        a=a>>1;
    }
    return enke;
}

unsigned int velikost(unsigned long long a){
        short enke=0;
    while(a>0){
        enke++;
        a=a>>1;
    }
    return enke;
}