Submit | All submissions | Best solutions | Back to list |
PROG0098 - EC numbers |
An EC number is, just like a CAS number, a unique identification number assigned to chemicals that are commercially available in the European Union. These numbers have been assigned by the Italy-based European Chemicals Bureau (ECB) since January 1, 1993. The list of chemicals to which an EC number has been assigned is called the EC Inventory, and is further broken down into the following categories:
- The European Inventory of Existing Commercial Chemical Substances (EINECS) is a list of chemicals, polymers are not taken into account, which were commercially available in the EU from 1 January 1971 to 18 September 1981 The identification number of such substances is called an EINECS. EINECS numbers start from 200-001-8 (formaldehyde). This is also the smallest possible EC number.
- The European List of Notified Chemical Substances (ELINCS) is a list of chemicals that were commercially available in the EU after 18 September 1981. The identification number of such substances is called an ELINCS. ELINCS numbers start from 400-010-9 (commercial name: Indosol yellow SF-2RL).
- In April 1992, the definition of polymers was changed. This meant that chemicals that were previously considered as polymers were no longer excluded from the EU legislation. As a result, a list of "No-longer Polymers" "(NLP) was drawn, which contains chemicals that were commercially available between 18 September 1981 and 31 October 1993. The identification number of such substances is called an NLP number. NLP numbers start from 500-001-0 (2-methylpropene, trimers).
An EC number is a seven-digit code that is displayed as $C_1C_2C_3-C_4C_5C_6-R$. $R$ is a check digit and every $C_i$ ($1\leq i\leq 6$) is a number. The check digit is calculated using the ISBN method. According to this method, the check digit should be equal to the remainder after division by 11 of the following sum: \[ C_1 + 2\times C_2 + 3\times C_3 + 4\times C_4 + 5 \times C_5 + 6\times C_6 \] Consequently, 200-003-9 is a valid EC number, as \[ 2+2\times 0+3\times 0+4\times 0+5\times 0+6\times 3=20=1\times 11+9 \] If the remainder $R$ equals 10, then this combination of numbers is not used as an EC number.
Input
The first line of the input contains an integer t that describes the number of test cases. On the following t lines there is always a string that is passed off as an EC number.
Output
Write a line of text to the output for each test case, containing the EC number as given in the input and one of the following announcements depending on the type: EINECS number, ELINCS number, NLP number or invalid number. Both must be separated by a single space. A test case is invalid if at least one of the following conditions is met:
- it does not have the format CCC-CCC-R
- the remainder $R$ equals 10
- the remainder $R$ differs from the check digit
- the number CCCCCCR is smaller than the smallest EC number
Try to keep the number and expression of the conditions that must be tested to determine the result as concise as possible.
Example
Input:
5
245-261-3
245-261-4
400-010-09
400-x10-9
abc
Output:
245-261-3 EINECS number
245-261-4 invalid number
400-010-09 invalid number
400-x10-9 invalid number
abc invalid number
Een EG-nummer is, net zoals een CAS-nummer, een uniek identificatienummer dat wordt toegewezen aan chemische stoffen die commercieel beschikbaar zijn binnen de Europese Unie. Deze nummers worden sinds 1 januari 1993 toegekend door het in Italië gevestigde European Chemicals Bureau (ECB). De lijst van alle chemische stoffen waaraan een EG-nummer werd toegekend wordt de EC Inventory genoemd, en deze lijst wordt verder opgesplitst in volgende categorieën:
- De European Inventory of Existing Commercial Chemical Substances (EINECS) is een lijst van chemische stoffen, polymeren niet in acht genomen, die commercieel beschikbaar waren binnen de EU vanaf 1 januari 1971 tot en met 18 september 1981. Het identificatienummer van dergelijke stoffen wordt een EINECS nummer genoemd. EINECS nummers starten vanaf 200-001-8 (formaldehyde). Dit is meteen ook het kleinst mogelijke EG-nummer.
- De European List of Notified Chemical Substances (ELINCS) is een lijst van chemische stoffen die commercieel beschikbaar werden binnen de EU na 18 september 1981. Het identificatienummer van dergelijke stoffen wordt een ELINCS nummer genoemd. ELINCS nummers starten vanaf 400-010-9 (commerciële naam: indosol yellow SF-2RL).
- In april 1992 werd de definitie van polymeren gewijzigd. Dit betekende dat chemische stoffen die voorheen beschouwd werden als polymeren niet langer werden uitgesloten uit de EU wetgeving. Als gevolg daarvan werd een lijst van "No-longer Polymers"" (NLP) opgesteld, die chemische stoffen bevat die commercieel beschikbaar werden tussen 18 september 1981 en 31 oktober 1993. Het identificatienummer van dergelijke stoffen wordt een NLP nummer genoemd. NLP nummers starten vanaf 500-001-0 (2-methylpropene, trimers).
Een EG-nummer bestaat uit een zevencijferige code die wordt weergegeven als $C_1C_2C_3-C_4C_5C_6-R$. Hierbij stelt $R$ een controlecijfer voor en stelt elke $C_i$ ($1\leq i\leq 6$) een cijfer voor. Het controlecijfer wordt berekend volgens de ISBN methode. Volgens deze methode moet het controlecijfer gelijk zijn aan de rest na deling door 11 van de volgende som: \[ C_1 + 2\times C_2 + 3\times C_3 + 4\times C_4 + 5 \times C_5 + 6\times C_6 \] Bijgevolg is 200-003-9 een geldig EG-nummer, aangezien \[ 2+2\times 0+3\times 0+4\times 0+5\times 0+6\times 3=20=1\times 11+9 \] Als de rest $R$ gelijk is aan 10, dan wordt deze combinatie van cijfers niet gebruikt als EG-nummer.
Invoer
Op de eerste regel van de invoer staat een natuurlijk getal t dat het aantal testgevallen beschrijft. Op de t volgende regels bevindt zich telkens een string die moet doorgaan voor een EG-nummer.
Uitvoer
Schrijf voor elk testgeval een regel tekst naar de uitvoer met daarop het EG-nummer zoals gegeven op de invoer en één van de volgende vermeldingen naargelang het type: EINECS nummer, ELINCS nummer, NLP nummer of ongeldig nummer. Beide moeten van elkaar gescheiden worden door één enkele spatie. Een testgeval is ongeldig als aan minstens één van volgende voorwaarden voldaan is:
- het heeft niet de vorm CCC-CCC-R
- de rest $R$ is gelijk aan 10
- de rest $R$ verschilt van het controlecijfer
- het getal CCCCCCR is kleiner dan het kleinste EG-nummer
Probeer het aantal en de uitdrukking van de voorwaarden die moeten getest worden om het resultaat te bepalen zo beknopt mogelijk te houden.
Voorbeeld
Invoer:
5
245-261-3
245-261-4
400-010-09
400-x10-9
abc
Uitvoer:
245-261-3 EINECS nummer
245-261-4 ongeldig nummer
400-010-09 ongeldig nummer
400-x10-9 ongeldig nummer
abc ongeldig nummer
Added by: | Peter Dawyndt |
Date: | 2011-08-03 |
Time limit: | 10s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | PY_NBC |
Resource: | None |