<prompt> Wewe ni meneja wa bidhaa na kwa sasa unaongoza timu kutengeneza bidhaa mpya. Kwa bahati mbaya, toleo la hivi punde la bidhaa yako halifanyi ukaguzi wa ubora. Kwa kuwa kila toleo linatengenezwa kulingana na toleo la awali, matoleo yote baada ya toleo mbaya pia ni mbaya.Tuseme una matoleo ya n 1, 2, ..., n na unataka kujua ile mbaya ya kwanza, ambayo husababisha yale yote yafuatayo kuwa mabaya.Umepewa API bool isBadVersionversion ambayo inarejesha kama toleo ni mbaya. Tekeleza kazi ili kupata toleo baya la kwanza. Unapaswa kupunguza idadi ya simu kwa API.Mfano wa 1:Ingizo: n 5, mbaya 4Pato: 4Maelezo:piga simu isBadVersion3 - uongopiga simu isBadVersion5 - kwelipiga simu isBadVersion4 - kweliKisha 4 ni toleo la kwanza mbaya.Mfano wa 2:Ingizo: n 1, mbaya 1Pato: 1Vikwazo: 1 mbaya n 231 - 1  <response>: chatudef first_bad_versionn: kushoto, kulia 1, n wakati kushoto kulia: katikati kushoto kulia - kushoto 2 if is_bad_versionkatikati: kulia katikati kwingine: kushoto katikati 1 kurudi kushotomaelezoKanuni inayotumika hapa ni mbinu ya utafutaji wa binary ambayo huanza na masafa kutoka toleo la kwanza hadi la mwisho. Katika kila marudio, huchukua sehemu ya kati na kuangalia kama ni toleo baya kwa kuita isBadVersion API.Ikiwa toleo la kati ni baya, hii inamaanisha kuwa toleo baya la kwanza ni toleo la kati au mahali pengine upande wa kushoto wa safu. Kwa hivyo, tunasasisha mwisho wa kulia wa safu hadi toleo la kati.Ikiwa toleo la kati si mbaya, toleo la kwanza baya lazima liwe mahali fulani upande wa kulia wa masafa. Kwa hivyo, tunasasisha mwisho wa kushoto wa safu hadi toleo la kati 1.Kitanzi kitaendelea hadi viashiria vya kushoto na kulia viungane, ikionyesha kwamba tumepata toleo baya la kwanza. Matokeo yake, tunarudi thamani ya pointer ya kushoto.Kanuni hii ina utata wa Ologi n, kwani inapunguza safu ya utafutaji kwa nusu kwa kila marudio hivyo basi kupunguza idadi ya simu kwa API. 