Problemi 006
Kërkesa
Tre shokë, le ti quajmë A, B dhe C, bëjnë pohimet e mëposhtme:
- A: Unë kam \(x\) lekë më shumë ose më pak se B
- B: Unë kam \(y\) lekë më shumë ose më pak se C
- C: Unë kam \(z\) lekë më shumë ose më pak se A
Bëni një program që merr numrat \(x, y, z\) dhe gjen nëse A, B dhe C mund të kenë sasi lekësh të tilla që të gjitha pohimet të jenë të vërteta.
Referenca: https://www.codechef.com/problems/THREEFR
Shembull
$ cat input.txt
2
1 2 1
1 1 1
$ python3 prog.py < input.txt
yes
no
Zgjidhja 1
T = int(input())
for t in range(T):
x, y, z = map(int, input().split())
if x >= y and x >= z:
print('YES' if x == y + z else 'NO')
elif y >= x and y >= z:
print('YES' if y == x + z else 'NO')
else:
print('YES' if z == x + y else 'NO')
https://tinyurl.com/101-prog-006-1
Sqarime
Që pohimet të jenë të vërteta, duhet që më i madhi prej numrave të jetë i barabartë me shumën e dy të tjerëve.
Zgjidhja 2
T = int(input())
for t in range(T):
x, y, z = map(int, input().split())
l = [x, y, z]
l.sort(reverse=True)
print('YES' if l[0] == l[1] + l[2] else 'NO')
https://tinyurl.com/101-prog-006-2
Sqarime
Për të gjetur më të madhin, ne mund të krijojmë një listë me ta dhe ti rendisim në rendin zbritës.
Zgjidhja 3
T = int(input())
for t in range(T):
x, y, z = map(int, input().split())
if y > x: x,y=y,x
if z > x: x,z=z,x
print('YES' if x==y+z else 'NO')
https://tinyurl.com/101-prog-006-3
Sqarime
Mund tu ndërrojmë vendet vlerave, në mënyrë të tillë që te x
-i të kemi gjithmonë vlerën më të madhe.
Zgjidhja 4
for _ in range(int(input())):
x, y, z = map(int, input().split())
print('YES' if 2*max(x,y,z)==x+y+z else 'NO')
https://tinyurl.com/101-prog-006-4
Sqarime
Disa zgjidhje janë më të thjeshta dhe më të shkurtra se të tjerat.
Detyra
Në një restorant ka filluar punë një kamarier i ri. Meqenëse nuk është dhe aq i mirë në matematikë, ndonjëherë e kthen reston gabim. Shefi i jep atij një problem të thjeshtë: Sa bëjnë \(a - b\)? Përgjigja e tij është gabim. Dhe për çudi ka vetëm një shifër gabim. E merrni dot me mënd?
A mund të shkruani një program që bën të njëjtin gabim? Programi merr
dy numra a
dhe b
dhe duhet të japë një diference të gabuar a-b
.
Përgjigja duhet të jetë një numër pozitiv që ka të njëjtin numër
shifrash me diferencën e saktë, ku të gjitha shifrat janë njësoj me
diferencën e saktë, me përjashtim të njërës që duhet të jetë e
ndryshme. Zeroja nuk duhet të jetë si shifër e parë (nga e majta).
Nëse ka përgjigje të ndryshme që i plotësojnë këto kushte, mjafton të
jepni vetëm njërën.
Referenca: https://www.codechef.com/problems/CIELAB
Shembull
$ cat input.txt
3
5858 1234
239 230
4375 4375
$ python3 prog.py < input.txt
1624
8
1
Në rastin e parë, diferenca e saktë është 5858 - 1234 = 4624
, kështu
që këto përgjigje do ishin të sakta: 2624
, 4324
, 4623
, 4604
,
4629
, kurse këto do ishin të gabuara: 0624
, 624
, 5858
, 4624
,
04624
.