Olimpiada misollarini yechish usullari II- bosqich Muallif: Mengliyev Sh. Qo`shilgan sana: 2015-04-08 Olimpiada misollarini yechish usullari II – bosqich
Download 43.84 Kb.
|
олимпиада учун масалалар
- Bu sahifa navigatsiya:
- Procedure
var
i, k : longint; begin if p = 2 then v := p else if p mod 2 <> 0 then begin i := 3; k := 0; while i <= trunc(sqrt(p)) do begin if p mod i = 0 then k := k + 1; i := i + 2 end; if k = 0 then v := p end end; Procedure extent(a, n : integer; var s : longint); var i : integer; begin s := 1; for i := 1 to n do s := s*a end; begin write('Dar. ko’r.qiym. chap cheg. kiriting’); readln(b); write('Mersen sonlari: '); for i := 2 to b do begin probleme_number(i, p); if p <> p1 then extent(2, p, m); if m <> m1 then probleme_number(m - 1, n); if n <> n1 then write(n,'; '); n1 := n; p1 := p; m1 := m end; writeln end. 83-misol. Shunday eng kichik n natural sonni topingki, 2n-2 n ga bo’linmasin, 3n-3 n ga bo’linsin. (Natural ko’rsatkichli natural sonning darajasini hisoblovchi prosedurani tuzing va undan foydalaning). Program L83; uses Crt; var n, s, s1 : integer; Procedure extent(a, n : integer; var s : integer); var i : integer; begin i := 1; s := 1; repeat s := s*a; i := i+1 until i=n end; begin n := 1; repeat n := n+1; extent(2, n, s); extent(3, n, s1); until ((s-2) mod (n-1)<>0) and ((s1-3) mod (n-1)=0); writeln('Qidirilayotgan son= ', n-1) end. 84-misol. Agar n ta (n>1) raqamlardan iborat bo’lgan sonning ndarajaga ko’tarilgan raqamlar yig’indisi sonning o’ziga teng bo’lsa u Armstrong soni deyiladi. Masalan, 153 va 1634 Armstrong sonlaridir, zero 153 = 13 + 53 + 33, 1634 = 14 + 64 + 34 + 44. Barcha n-xonali Armstrong sonlarini topuvchi dastur tuzing (n –kiritiladigan ma’lumot, jumladan n<10). Masalaning matematik tahlili Foydalanuvchi tomonidan sonning n ta xonasi, ya’ni sonda bo’lishi kerak bo’lgan raqamlar soni kiritiladi. Masalan, u 5 sonini kiritishi mumkin. Dastur barcha besh xonali sonlar ichidan Armstrong sonlarini topishi kerak, albatta bunday sonlar bo’lsa. Buning uchun dasturda eng kichik n-xonali sonni aniqlash kerak, buni 1 dan n-1 gacha bo’lgan siklni tashkil etib, avvaldan o’rnatilgan o’zgaruvchini (uning boshlang’ich qiymati 1) 10 ko’paytirgan holda amalga oshirsa bo’ladi. Eng katta n-xonali sonni aniqlash uchun eng kichik n-xonali sonni 10 ga ko’paytirib, hosil bo’lgan sondan 1 ni ayirib tashlash yetarli. Masalan, 5 xonali sonlar ichida eng kichigi 10000, eng kattasi esa 100000-1=99999 bo’ladi. Eng kichik va eng katta n-xonali sonni aniqlash uchun quyidagi prosedurani tashkil qilamiz: Procedure minmax(n : longint; var min, max : longint); var i : longint; begin min := 1; for i := 1 to n - 1 do min := min*10; max := min*10 - 1 end; Sonning har bir raqamini n-darajaga ko’tarish kerak bo’ladi, buning uchun esa darajaga ko’tarish prosedurasiga zarurat tug’iladi. Bu prosedura bizga oldingi masalalardan ma’lum: Procedure extent(a, n : longint; var s : longint); var i : longint; begin s := 1; Download 43.84 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling