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.
bet3/12
Sana24.04.2023
Hajmi43.84 Kb.
#1394008
1   2   3   4   5   6   7   8   9   ...   12
Bog'liq
олимпиада учун масалалар

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:
1   2   3   4   5   6   7   8   9   ...   12




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling