Inode flags


Submit solution

Points: 10
Time limit: 5.0s
Memory limit: 256M

Author:
Problem type
Allowed languages
C#, Go, Java

Un arxiu de Linux té una sèrie d'atributs que es poden activar o desactivar amb la comanda .

Els atributs que té activats/desactivats un arxiu es guarden amb una estructura anomenada bit-field:

  • A cada atribut li correspon una puntuació.
  • El bit-field és la suma de les puntuacions que corresponen als atributs que estan activats.

Els atributs que pot tenir un arxiu, i les seves puntuacions, són:

+-------------------+-----------+---------------------------------+
|        Nom        | Puntuació |           Descripció            |
+-------------------+-----------+---------------------------------+
| EXT4_SECRM_FL     |         1 | Secure deletion                 |
| EXT4_UNRM_FL      |         2 | Undelete                        |
| EXT4_COMPR_FL     |         4 | Compress file                   |
| EXT4_SYNC_FL      |         8 | Synchronous updates             |
| EXT4_IMMUTABLE_FL |        16 | Immutable file                  |
| EXT4_APPEND_FL    |        32 | writes to file may only append  |
| EXT4_NODUMP_FL    |        64 | do not dump file                |
| EXT4_NOATIME_FL   |       128 | do not update atime             |
+-------------------+-----------+---------------------------------+

Per exemple: si un arixu té activats els atributs i , el seu bit-field serà 34, que és la suma de la puntuació 2 de més la puntuació 32 de .

Escriu un programa que a partir del bit-field d'un fitxer imprimeixi els atributs que té activats.

Input Format

Un número enter que representa el bit-field d'un arxiu.

Constraints

-

Output Format

S'imprimirà el Nom dels atributs que té activats el fitxer en ordre de major a menor puntuació:

EXT4_NOATIME_FL
EXT4_NODUMP_FL
EXT4_APPEND_FL
EXT4_IMMUTABLE_FL
EXT4_SYNC_FL
EXT4_COMPR_FL
EXT4_UNRM_FL
EXT4_SECRM_FL

Suggerència per a la solució

Un possible solució al problema consisteix en tractar de restar al bit-field la puntuació de cada atribut (de més puntuació a menys).

Si es pot restar sense que quedi un número negatiu, aleshores és que té aquell atribut activat.

Per exemple: suposem que el bit-field es 34:

  • tractem de restar 128: no es pot
  • tractem de restar 64: no es pot
  • tractem de restar 32: sí es pot. Imprimim . Restem 32 i queda 2
  • tractem de restar 16: no es pot
  • tractem de restar 8: no es pot
  • tractem de restar 4: no es pot
  • tractem de restar 2: sí es pot. Imprimim . Restem 2 i queda 0
  • tractem de restar 1: no es pot

Test Case 1

Input
10
Output
EXT4_SYNC_FL
EXT4_UNRM_FL

Test Case 2

Input
11
Output
EXT4_SYNC_FL
EXT4_UNRM_FL
EXT4_SECRM_FL

Test Case 3

Input
23
Output
EXT4_IMMUTABLE_FL
EXT4_COMPR_FL
EXT4_UNRM_FL
EXT4_SECRM_FL

Test Case 4

Input
31
Output
EXT4_IMMUTABLE_FL
EXT4_SYNC_FL
EXT4_COMPR_FL
EXT4_UNRM_FL
EXT4_SECRM_FL

Test Case 5

Input
170
Output
EXT4_NOATIME_FL
EXT4_APPEND_FL
EXT4_SYNC_FL
EXT4_UNRM_FL

Test Case 6

Input
255
Output
EXT4_NOATIME_FL
EXT4_NODUMP_FL
EXT4_APPEND_FL
EXT4_IMMUTABLE_FL
EXT4_SYNC_FL
EXT4_COMPR_FL
EXT4_UNRM_FL
EXT4_SECRM_FL

Test Case 7

Input
1
Output
EXT4_SECRM_FL

Test Case 8

Hidden: this is a private test case!


Authorship: Gerard Falcó

CC BY-NC-SA 4.0