rgnerdplayer's blog

By rgnerdplayer, history, 3 years ago, In English

I was just doing virtual on 1338A - Прибавление степеней.

I wrote the following code: 121160133

and it out puts "63" on this test: N = 5, A = {-9, -2, -2, 7, 5} on both versions of C++17.

The probably problematic part is here:

code

If I output i and ans, ans is changed to 63 at i = 2.

But I thought __lg(0) is -1? Also in custom invocation, the error message never appears, and the code is never terminated by assert(false).

Does anyone have any idea?

  • Vote: I like it
  • +4
  • Vote: I do not like it

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by rgnerdplayer (previous revision, new revision, compare).

»
3 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by rgnerdplayer (previous revision, new revision, compare).

»
3 years ago, # |
Rev. 3   Vote: I like it +18 Vote: I do not like it

OK, I couldn't find any reference about that function, but I was able to look at the definition of it in the source code of stl_algobase.h. It looks like the following image and it apparently says that __lg(0) is undefined.