Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Bitnami MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
1139 - Covor
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
Bunica Marei țese un covor. Mara urmărește cu mare atenție modelul și încearcă să-l reconstituie pe caietul de matematică. Modelul este format din romburi. Primul romb, de indice <code>1</code>, are latura formată din două pătrățele, al doilea romb, de indice <code>2</code>, are latura formată din trei pătrățele etc. Un romb de indice <code>i</code> are latura formată din <code>i+1</code> pătrățele. Romburile sunt unite, consecutiv, ca în exemplul din imaginea alăturată. Săgețile indică sensul în care bunica țese covorul. Ca să nu uite modelul, Mara scrie pe caiet, începând cu <code>1</code>, numere consecutive care să indice modul în care țese bunica covorul. În exemplul următor este reprezentat modul în care se țese un model format din patru romburi. = Cerinţe = Cunoscându-se numerele <code>n</code> și <code>k</code> să se determine: '''1.''' numărul maxim de romburi complete care pot forma modelul unui covor, descris cu ajutorul unui șir format din maximum <code>n</code> numere naturale consecutive (primul număr din șir fiind <code>1</code>); '''2.''' cel mai mic indice al unui romb ce conține numărul <code>k</code>. = Date de intrare = Fișierul de intrare <code>covor.in</code> conține pe prima linie, separate prin spațiu, două numere naturale: <code>n</code> (reprezentând numărul maxim de numere consecutive utilizate la descrierea unui model) și <code>k</code> (reprezentând un număr din șirul celor <code>n</code> numere consecutive). Linia a doua conţine una dintre valorile <code>1</code> sau <code>2</code> reprezentând cerinţa 1, dacă se cere determinarea numărului maxim de romburi complete care pot forma modelul unui covor descris cu ajutorul unui șir format din maximum <code>n</code> numere, respectiv cerinţa 2, dacă se cere determinarea celui mai mic indice al unui romb ce conține numărul <code>k</code>. = Date de ieșire = Fișierul de ieșire <code>covor.out</code> va conține pe prima linie o valoarea naturală reprezentând numărul maxim de romburi complete care pot forma modelul unui covor, descris cu ajutorul unui șir format din maximum <code>n</code> numere, dacă cerinţa a fost <code>1</code>, respectiv un număr natural reprezentând cel mai mic indice al unui romb ce conține numărul <code>k</code>, dacă cerinţa a fost <code>2</code>. = Restricții și precizări = * <code>4 ≤ n,k ≤ 999999999</code>; <code>1≤k≤n</code> * Dacă numărul <code>k</code> nu se află pe niciunul dintre romburile complete ce pot fi construite folosind maximum <code>n</code> numere, atunci răspunsul de la cerința 2 este <code>0</code>. * Pentru rezolvarea corectă a cerinţei 1 se acordă 30% din punctaj, iar pentru rezolvarea corectă a cerinţei 2 se acordă 70% din punctaj. = Exemple = {| class="wikitable" |<code>covor.in</code> |<code>covor.out</code> |'''Explicație''' |- | 40 32 1 | 4 |Cel mai mare număr de romburi ce pot forma un model descris cu maximum <code>40</code> de numere este <code>4</code>. |- | 40 32 2 | 3 |Numărul <code>32</code> se află pe cel de-al treilea romb. |- | 37 7 2 | 2 |Numărul <code>7</code> se află pe cel de-al doilea și pe cel de-al treilea romb. Cel mai mic indice al unui romb ce conține numărul <code>7</code> este <code>2</code>. |- | 14 12 2 | 0 |Numărul <code>12</code> '''nu''' se află pe niciunul dintre cele două romburi ce pot forma un model descris cu maximum <code>14</code> de numere. |} == Încărcare soluție == === Lipește codul aici === <syntaxhighlight lang="python" line="1"> with open("covor.in", "r") as f: n, k, c = map(int, f.readline().split()) r = 1 while 2 * (r + 1) * (r + 2) - r <= n: r += 1 with open("covor.out", "w") as g: if c == 1: g.write(str(r) + '\n') else: if k > 2 * r * (r + 1) - (r - 1): g.write('0\n') else: p = 1 m = 1 + r * (r + 1) if k <= m: while k > 1 + p * (p + 1): p += 1 g.write(str(p) + '\n') else: p = r while k > (m + 2 * p - 1): m = m + 2 * p - 1 p -= 1 g.write(str(p) + '\n') </syntaxhighlight>
Summary:
Please note that all contributions to Bitnami MediaWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Bitnami MediaWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width