Rezultati

Up. imeNalogaJezikRezultatČas oddaje
4c-2019 Kvadrati C++ 0/100Prekoračen čas (TLE) 09. maj '19 @ 18:08

Test Točke Porabljen spomin Porabljen čas Status
#1 [več] 0/2 3,160 MiB 0,004 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​60755062
<<<EOF>>>
#2 [več] 0/2 3,156 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​19884152
<<<EOF>>>
#3 [več] 0/2 3,066 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​34080778
<<<EOF>>>
#4 [več] 0/2 2,879 MiB 3,019 s Prekoračen čas
#5 [več] 0/2 2,875 MiB 3,013 s Prekoračen čas
#6 [več] 0/2 3,059 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​37747471
<<<EOF>>>
#7 [več] 0/2 2,848 MiB 3,031 s Prekoračen čas
#8 [več] 0/2 3,160 MiB 0,004 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​46730578
<<<EOF>>>
#9 [več] 0/3 3,160 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​87351429
<<<EOF>>>
#10 [več] 0/3 3,160 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​60017250
<<<EOF>>>
#11 [več] 0/3 2,848 MiB 3,043 s Prekoračen čas
#12 [več] 0/3 3,070 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​37747471
<<<EOF>>>
#13 [več] 0/3 3,160 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​87373639
<<<EOF>>>
#14 [več] 0/3 3,070 MiB 0,004 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​72815768
<<<EOF>>>
#15 [več] 0/3 3,160 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​4599907
<<<EOF>>>
#16 [več] 0/3 3,160 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​37747471
<<<EOF>>>
#17 [več] 0/3 3,152 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​34080778
<<<EOF>>>
#18 [več] 0/3 2,848 MiB 3,025 s Prekoračen čas
#19 [več] 0/3 2,848 MiB 3,037 s Prekoračen čas
#20 [več] 0/3 3,156 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​60755062
<<<EOF>>>
#21 [več] 0/3 3,070 MiB 0,004 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​82009206
<<<EOF>>>
#22 [več] 0/3 3,070 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​37747471
<<<EOF>>>
#23 [več] 0/3 2,875 MiB 3,037 s Prekoračen čas
#24 [več] 0/3 3,070 MiB 0,004 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​14909853
<<<EOF>>>
#25 [več] 0/3 3,152 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​47161885
<<<EOF>>>
#26 [več] 0/3 3,063 MiB 0,004 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​24630835
<<<EOF>>>
#27 [več] 0/3 2,844 MiB 3,049 s Prekoračen čas
#28 [več] 0/3 3,066 MiB 0,004 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​82009206
<<<EOF>>>
#29 [več] 0/3 3,070 MiB 0,004 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​87351429
<<<EOF>>>
#30 [več] 0/3 2,879 MiB 3,025 s Prekoračen čas
#31 [več] 0/3 2,879 MiB 3,031 s Prekoračen čas
#32 [več] 0/3 2,840 MiB 3,049 s Prekoračen čas
#33 [več] 0/3 2,848 MiB 3,037 s Prekoračen čas
#34 [več] 3/3 3,160 MiB 0,004 s OK
#35 [več] 0/3 3,070 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​0
<<<EOF>>>
#36 [več] 0/3 3,070 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​1
<<<EOF>>>
Pravilen izhod:
​32302
<<<EOF>>>

Ocenjevani program (kvadrati.cpp):
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <bitset>
#include <cmath>

#define ll unsigned long long

using namespace std;

ll getNumber( ll number, int index )
{
    bitset<64> a(number);
    string n = a.to_string('0','1');

    string number_str = n.substr( index, n.size() - index + 1 );
    bitset<64> num(number_str);
    return num.to_ulong();
}

bool istoSteviloEnic( ll number, int st_enic )
{
    bitset<64> num(number);
    string a = num.to_string();

    return st_enic == ( count(a.begin(), a.end(),'1') );
}

int poisci( int min, int max, int st_enic )
{
    int odgovor = 0;
    for (int min_s = min; min_s < max; ++min_s) {
        ll st = pow(min_s,2);      
        if( istoSteviloEnic( st, st_enic ) ) odgovor++;
    }

    if( odgovor == 0 )
        odgovor = 1;

    return odgovor;
}

int main( int argc, char * argv[] ) 
{
    ll stevilo;
    cin >> stevilo;

    bitset<64> bit( stevilo );
    string str = bit.to_string('0','1');

    ll index = str.find('1');
    str = str.substr(index, str.size() - index);
    size_t st_nicl = count(str.begin(), str.end(), '0');
    size_t st_enic = count(str.begin(), str.end(), '1');

    ll min = 0;
    ll max = getNumber((  ~min << st_nicl ),index);
    min = ( ~min >> ( sizeof(ll)*8 - st_nicl)+1) ^ (1 << str.size()-1 );

    std::cout << poisci( floor( sqrt( min )), ceil( sqrt(max) ), st_enic) << std::endl;




    return 0;
}