Календар#
Како решение на оваа задача се бараше програма која од стандарден влез (тастатура) ќе прочита два цели броеви M и G, кои означуваат одреден месец и година - соодветно, и на стандарден излез (екран) ќе отпечати колку денови имал/има/ќе има месецот M во годината G.
Решението се сведува на чување на бројот на денови кои ги има секој месец и пресметување дали една година е престапна или не (со if наредба). Следи изворниот код на официјалното решение:
C++#
#include <iostream>
using namespace std;
int main()
{
int days[] = {31,28,31,30,31,30,31,31,30,31,30,31};
int m, y;
cin >> m >> y;
int answer = days[m-1];
if (m==2) //february
if ((y%400==0) || ((y%4==0)&&(y%100!=0)))
answer++;
cout << answer << endl;
return 0;
}
Шах#
Во оваа задача се бараше да напишеме програма која за дадена позиција на еден коњ, и позициите на N противнички фигури, ќе пресмета и отпечати колку од N-те противнички фигури се нападнати од коњот.
Задачата се решава така што, откога ќе ја прочитаме позицијата на која се наоѓа коњот, за секоја од N-те противнички фигури проверуваме, посебно, дали е таа на позиција на која што може да дојде коњот. Проверката можеме да ја направиме на повеќе начини: чувајќи ги можните потези на коњот во низа (види решение), проверка дали важи условот (abs(r1-r2)==1 && abs(c1-c2)==2), или па дали важи (r1-r2)%%sup 2/%+(c1-c2)%%sup 2/%==5
. Следи изворниот код на официјалното решение:
C++#
#include <iostream>
#include <string>
using namespace std;
int main()
{
int row, col;
string scol;
cin >> scol >> row;
col = scol[0] - 'a' + 1;
int n;
cin >> n;
int answer = 0;
int mx[] = {-2,-1,1,2, 2, 1,-1,-2};
int my[] = {1 ,2, 2,1,-1,-2,-2,-1};
for (int i=0; i<n; i++)
{
int cr, cc;
string scc;
cin >> scc >> cr;
cc = scc[0] - 'a' + 1;
for (int j=0; j<8; j++)
if (row+my[j] == cr)
if (col+mx[j] == cc)
answer++;
}
cout << answer << endl;
return 0;
}
Ова решение има линеарна сложеност O(N).
Тест случаи#
Тест случаите можете да ги симнете како .zip архива тука
. Текстот и решенијата дадени погоре можете слободно да ги коментирате на форумот.
Add new attachment
List of attachments
| Kind | Attachment Name | Size | Version | Date Modified | Author | Change note |
|---|---|---|---|---|---|---|
zip |
testovi_cetvrti_elektronski_20... | 17.6 kB | 1 | 20-Aug-2015 17:35 | MOI |