# | User | Rating |
---|---|---|
1 | tourist | 3985 |
2 | jiangly | 3814 |
3 | jqdai0815 | 3682 |
4 | Benq | 3529 |
5 | orzdevinwang | 3526 |
6 | ksun48 | 3517 |
7 | Radewoosh | 3410 |
8 | hos.lyric | 3399 |
9 | ecnerwala | 3392 |
9 | Um_nik | 3392 |
# | User | Contrib. |
---|---|---|
1 | cry | 169 |
2 | maomao90 | 162 |
2 | Um_nik | 162 |
4 | atcoder_official | 160 |
5 | djm03178 | 158 |
6 | -is-this-fft- | 157 |
7 | adamant | 155 |
8 | Dominater069 | 154 |
8 | awoo | 154 |
10 | luogu_official | 151 |
Name |
---|
!!(num) gives either 1 or 0.
Let's say if num!=0 then it returns 1 else it will return 0
It converts the value into boolean(0 or 1)
Just to be clear,
!!
isn't a function. It is two!
operators used together. He uses two of those to count the number of non-zero elements. You could do it in other ways too. If!
was being used on an object that has an operator overload for it, it'd be valid referring to it as a function.How does it count number of non-zero elements?
The first
!
(beforecnt
) checks if a number is 0 or not. If it is 0, the expression results in true, otherwise false. The second!
causes a true expression to result in false and false expression to result in true. So, in the end, a non-zero number ends up as booleantrue
or1
, and the opposite happens for zero i.e. it ends up as booleanfalse
or0
.