<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3676_-_ABK1K2</id>
	<title>3676 - ABK1K2 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3676_-_ABK1K2"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3676_-_ABK1K2&amp;action=history"/>
	<updated>2026-05-01T04:42:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3676_-_ABK1K2&amp;diff=9749&amp;oldid=prev</id>
		<title>Cristina94: Pagină nouă: ==Cerința== Se dau patru numere naturale a, b, k1, k2. Determinați numărul de submulțimi formate din două elemente numere naturale x și y, cu x și y cuprinse între a și b, astfel încât cel mai mare divizor comun al lui x și y să fie multiplu de k1 sau multiplu de k2.  ==Date de intrare== Fișierul de intrare conține patru numere, câte unul pe rând, în ordine: a, b, k1, k2 cu semnificația de mai sus.  ==Date de ieșire== În fișierul de ieșire se va scrie p...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3676_-_ABK1K2&amp;diff=9749&amp;oldid=prev"/>
		<updated>2024-04-01T10:42:31Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: ==Cerința== Se dau patru numere naturale a, b, k1, k2. Determinați numărul de submulțimi formate din două elemente numere naturale x și y, cu x și y cuprinse între a și b, astfel încât cel mai mare divizor comun al lui x și y să fie multiplu de k1 sau multiplu de k2.  ==Date de intrare== Fișierul de intrare conține patru numere, câte unul pe rând, în ordine: a, b, k1, k2 cu semnificația de mai sus.  ==Date de ieșire== În fișierul de ieșire se va scrie p...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Cerința==&lt;br /&gt;
Se dau patru numere naturale a, b, k1, k2. Determinați numărul de submulțimi formate din două elemente&lt;br /&gt;
numere naturale x și y, cu x și y cuprinse între a și b, astfel încât cel mai mare divizor comun al lui x și y să fie multiplu de k1 sau multiplu de k2.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Fișierul de intrare conține patru numere, câte unul pe rând, în ordine: a, b, k1, k2 cu semnificația de mai sus.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
În fișierul de ieșire se va scrie pe prima linie valoarea cerută.&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
*a și b sunt cuprinse între 1 și inclusiv 109, a ≤ b.&lt;br /&gt;
*k1 și k2 sunt cuprinse între 2 și 109 inclusiv.&lt;br /&gt;
*perechile pentru care avem x = y nu se numără.&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;abk1k2.in&lt;br /&gt;
:4&lt;br /&gt;
:10&lt;br /&gt;
:2&lt;br /&gt;
:4&lt;br /&gt;
&lt;br /&gt;
;abk1k2.out&lt;br /&gt;
:6&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
Submulțimile care se numără sunt: 4, 6 4, 8 4, 10 6, 8 6, 10 8, 10.&lt;br /&gt;
&lt;br /&gt;
==Exemplul 2==&lt;br /&gt;
;abk1k2.in&lt;br /&gt;
:10&lt;br /&gt;
:20&lt;br /&gt;
:3&lt;br /&gt;
&lt;br /&gt;
;abk1k2.out&lt;br /&gt;
:Date invalide: Nu sunt suficiente date in fisierul de intrare&lt;br /&gt;
&lt;br /&gt;
==Rezolvare==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#3676 abk1k2&lt;br /&gt;
from math import gcd&lt;br /&gt;
&lt;br /&gt;
def verificare_date_intrare(a, b, k1, k2):&lt;br /&gt;
  # Verificăm dacă a și b sunt în intervalul specificat&lt;br /&gt;
  if not (1 &amp;lt;= a &amp;lt;= b &amp;lt;= 10**9):&lt;br /&gt;
    return False&lt;br /&gt;
  &lt;br /&gt;
  # Verificăm dacă k1 și k2 sunt în intervalul specificat&lt;br /&gt;
  if not (2 &amp;lt;= k1 &amp;lt;= 10**9 and 2 &amp;lt;= k2 &amp;lt;= 10**9):&lt;br /&gt;
    return False&lt;br /&gt;
  &lt;br /&gt;
  return True&lt;br /&gt;
&lt;br /&gt;
def numar_submultimi(a, b, k1, k2):&lt;br /&gt;
  if not verificare_date_intrare(a, b, k1, k2):&lt;br /&gt;
    return &amp;quot;Date invalide: Parametrii introdusi sunt incorecti.&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  count = 0&lt;br /&gt;
  for x in range(a, b + 1):&lt;br /&gt;
    for y in range(x + 1, b + 1):&lt;br /&gt;
      if gcd(x, y) % k1 == 0 or gcd(x, y) % k2 == 0:&lt;br /&gt;
        count += 1&lt;br /&gt;
  return count&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
  # Citim datele de intrare&lt;br /&gt;
  with open(&amp;quot;abk1k2.in&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
    linii = f.readlines()&lt;br /&gt;
  &lt;br /&gt;
  # Eliminăm liniile goale și spațiile suplimentare&lt;br /&gt;
  linii = [linie.strip() for linie in linii if linie.strip()]&lt;br /&gt;
  &lt;br /&gt;
  # Verificăm dacă avem suficiente linii pentru a extrage datele&lt;br /&gt;
  if len(linii) != 4:&lt;br /&gt;
    # Scriem mesaj de date invalide în fișierul de ieșire&lt;br /&gt;
    with open(&amp;quot;abk1k2.out&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
      f.write(&amp;quot;Date invalide: Nu sunt suficiente date in fisierul de intrare&amp;quot;)&lt;br /&gt;
    return&lt;br /&gt;
  &lt;br /&gt;
  # Extragem datele de intrare&lt;br /&gt;
  a = int(linii[0])&lt;br /&gt;
  b = int(linii[1])&lt;br /&gt;
  k1 = int(linii[2])&lt;br /&gt;
  k2 = int(linii[3])&lt;br /&gt;
  &lt;br /&gt;
  # Calculăm numărul de submulțimi dorit&lt;br /&gt;
  rezultat = numar_submultimi(a, b, k1, k2)&lt;br /&gt;
  &lt;br /&gt;
  # Scriem rezultatul în fișierul de ieșire&lt;br /&gt;
  with open(&amp;quot;abk1k2.out&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
    f.write(str(rezultat))&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
  main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cristina94</name></author>
	</entry>
</feed>