1’den N’ye kadar numaralandırılmış N kutunuz ve 1’den K’ya kadar numaralandırılmış K şekeriniz var:
ilk kutuya ilk şeker,
ikinci kutuya ikinci şeker,
…
…
böylece N’inci kutuya N’inci şekere kadar,
(N - 1)'inci kutuya bir sonraki şeker,
(N - 2)-inci kutuya bir sonraki şeker
…
…
ve böylece yine ilk kutuya kadar devam eder,
sonra ikinci kutuya bir sonraki şeker
… ve hiç şeker kalmayana kadar böyle devam eder.
Giriş biçimi
İlk satır, test senaryolarının sayısını gösteren T’yi içerir. T test durumunun açıklaması aşağıdaki gibidir:
Her test senaryosu, N ve K olmak üzere iki tamsayı içeren tek bir satırdan oluşur.
Çıktı biçimi
Her test senaryosu için, K’inci şekeri koyduğunuz kutunun indeksini yazdırın.
Örnek girdi
3
5 2
3 5
10 27
Örnek Çıktı
2
1
9
Bu programa biraz uyduruk bir kod yazdım ama zaman engeline takıldı. Geliştirip atmak istiyorum. Böyle arada paylaşıyorum ki maksat paylaşım olsun, zengin fikirler, düşünceler çıkıyor böyle konulardan.
Benim kodum şu:
def sekerler(box,sayi):
sonuc = sayi - box
i = 1
while sonuc>0:
sonuc = sonuc - (box-1)
i = -i
if i==1:
return box-abs(sonuc)
else:
return abs(sonuc)+1
T = int(input())
for i in range(T):
N,K = map(int,input().split())
son=sekerler(N,K)
print(son)
Önceki kod zaman sınırlamasına takılmıştı ama şu kod sorunsuz geçti zamanı da.
def seker(kutu,seker):
if seker<=kutu:
return seker
kalan = seker - kutu
artan = kalan%(kutu-1)
yon = kalan//(kutu-1)
if yon%2==0:
return kutu-artan
else:
return artan+1
T = int(input())
for i in range(T):
N,K = map(int,input().split())
son=seker(N,K)
print(son)