November 24, 2020

№4 Máseleniń sheshiliwi

Sheshiliwi:

Aldın aytıp ótkenimdey, eger programmadaǵı islesetuǵın sanlar ápiwayı tiplerge sıymaytuǵın bolsa, onda qatarlardan yamasa massivlerden paydalanıń. Bunnan basqada BigInteger hám BigDecimal klasları bar bolıp, olar haqqında keyinrek toqtalıp ótemiz.

4-másele ushın qatarlardan paydalanamız. Yaǵnıy kiritiletuǵın N pútin sanın qatar sıpatında kiritemiz. Bul san qatar bolǵanlıqtan, ol ústinde tuwrıdan-tuwrı matematikalıq ámellerdi orınlay almaymız. Biraq hár qıylı sanlardı alıp qarasaq, qandayda bir izbe-izlikti tabıwǵa boladı.

Máselen, 25 sanın alıp qarayıq. Bul sannıń bóliwshileri: 1, 5, 25. Usınıń ishinde eń jamanı 1 (eń jaqsı jamanın anıqlaw ushın másele shártin qaytadan oqıń). 16 sanın alsaq, bóliwshileri: 1, 2, 4, 8, 16. Usınıń ishinde eń jamanı 1. 100 sanın alıp qarayıq, bóliwshileri: 1, 2, 4, 5, 10, 20, 25, 50, 100. Al eń jamanı 1 emes 100 boladı. Sebebi cifrlar qosındısı teń bolǵanda úlkeni eń jaman san.

Bunnan kórinedi, eń jaman bóliwshi bolıwǵa san bóliwshileri arasındaǵı talabanlar: 1, 10, 100, 1000, … hám t.b. Eger bóliwshileri arasında 1 den keyin eń kóp 0 bar san bolsa, sol eń jamanı boladı eken. Bunı, sannıń bóliwshilerin bilmey turıpta anıqlawǵa boladı. Máselen, 1099280 sannıń eń jaman bóliwshisi 10 ekenligi kórinip tur. Sebebi, bul san 100 ge yamasa onnan joqarı izinde noli bar sanǵa bólinbeydi. Tap usınday, 190290000 sanınıń eń jaman bóliwshisi: 10000, 10000000 sanınıń eń jaman bóliwshisi sol sannıń ózi, 102192873827372777 sanınıń eń jaman bóliwshisi bolsa 1 ekenligi kórinip tur.

Demek, kiritilgen sannıń tek ǵana izindegi nollerin alıp, aldına 1 da jazıp juwapqa shıǵarsaq boldı)

Algoritm:

  1. S qatarın kiritemiz (pútin uzın san);
  2. H = “1” qatarın alamız;
  3. I = S.length() - 1; - qatardıń uzınlıǵı yaǵnıy simvollar sanı;
  4. Eger I==0 yamasa S.charAt(I) != ‘0’ bolsa 8-adımǵa ótilsin;
  5. H = H + “0”;
  6. I = I – 1;
  7. 4-adımǵa ótilsin;
  8. Nátiyjege H shıǵarılsın;
  9. Algoritm juwmaqlansın.

Programma kodı (Javada):

Siz bunnanda jaqsı, effektiv algoritm dúze alsańız, bizge xabar beriń!

Baylanıs ushın: A.Orınbaev

https://t.me/programmalastiriwJava

https://t.me/TITUNFProgDogerek