Oylik arxiv: Mart 2017

Olimpiada misollarini yechish usullari.

Olimpiada misollari
PASKAL UCHBURCHAGI

Kiruvchi fayl nomi:                          pascal. in
Chiquvchi  fayl nomi:             pascal. out
Vaqt bo’yicha cheklanishar:   2 sekund
Xotira bo’yicha cheklanishar:          64 megabayt

Paskal uchburchagi- bu quyidagi ko’rinishdagi sonlardan tashkil topgan cheksiz uchburchak:
1
1       1
1      2      1
1     3       3      1
1     4      6      4       1
1     5     10     10      5      1
1     6     15     20     15      6      1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

 

Paskal uchburchagi qatorlari noldan, har bir qatordagi sonlar ham noldan boshlab nomerlanadi. Nolinchi qatorda faqatgina bitta son – bir, keyingi har bir qatorda esa oldingisidagidan bitta ko’p son bor. Har bir qatordagi nolinchi va oxirgi son birga, qolganlarning har biri esa oldingi qatordagi ularning tepasida turgan ikkita sonning yig’indisiga teng.  Shunday qilib i-qatorda i+1 ta son bor. Agar i-qatorning j-elementini a a ij deb belgilasak, u holda  tenglik bajariladi. Bu tenglik oldingi qatordagi yo’q elementlarni (1 va i nomerli elementlar) nolga tenglasak, chetki elementlar uchun ham bajariladi.
Murod Paskal uchburchagining n-qatorida nechta toq son borligini bilmoqchi. Murod uchburchak chiza boshladi, lekin u tez orada varoqqa sig’may qoldi. Shunda Murod bu jarayonni kompyuterda bajarishga ahd qildi.  Unga yordam bering.

Kiruvchi fayl formati

Kiruvchi faylda n 0<=n<=2 000 000 000  soni saqlanadi.

Chiquvchi fayl formati

       Chiquvchi faylda bitta son- Paskal uchburchagining n-qatoridagi toq sonlar miqdori bo’lishi kerak.

Program Paskal_uchburchagi;
Var i,j,n,k: integer; l: real; a: array[0..100, 0..100] of integer; f1, f2: file;
Begin  assign (f1, ‘pascal.in’); reset (f1); read (f1,n);  a[0,0]:=1;  a[1,0]:=1; a[1,1]:=1;
if n>1 then Begin for i:=2 to n do Begin a[I,0]:=1;   a[I,i]=1 End;
For i:=2 to n do For j:=1 to i-1 do A[I,j]:=a[i-1,j-1]+a[i-1,j]; End; K:=0;
For i:=0 to n do For j:=1 to I do If a[I,j] mod 2<>0 then K:=k+1; Assign (f2, ‘pascal.out’);
Rewrite (f2);   Write (f2,k); Close (f1);   Close (f2); Readln; End.