[Logo] Mendo Judge Discussion Board - Forums
  [Search] Search   [Recent Topics] Recent Topics   [Hottest Topics] Hottest Topics   [Members]  Member Listing   [Groups] Back to home page 
Задача Четворка  XML
Forum Index » Задачи од национални натпревари
Author Message
MODDI



Joined: 27/12/2017 18:17:00
Messages: 39
Offline

Значи ја решавав задачава и кодот што го пишав броевите ги правеше во четворки и проверуваше дали последните броеви и првите проеви се според условот X*A=Y*B (XYAB), ама има решенија каде бројот што треба да се брише е во средината во низата, малку помош?
#include <iostream>
using namespace std;
int main()
{
int N;
cin>>N;
int A[N];
for(int i=0;i<N;i++)
{
cin>>A[i];
}
int raz=0;
int a=N-3;
for(int i=0;i<a;i++)
{
if(A[i]*A[i+2]==A[i+1]*A[i+3])
{
raz++;
}
}
int b=A[N-3]*A[N-1];
int c=A[N-2]*A[0];
int d=A[N-1]*A[1];
int e=A[0]*A[2];
if(b==c)
raz++;
if(c==d)
raz++;
if(d==e)
raz++;
cout<<raz<<endl;
return 0;
}
MOI



Joined: 07/07/2010 16:31:48
Messages: 447
Offline

MODDI wrote:Значи ја решавав задачава и кодот што го пишав броевите ги правеше во четворки и проверуваше дали последните броеви и првите проеви се според условот X*A=Y*B (XYAB), ама има решенија каде бројот што треба да се брише е во средината во низата, малку помош?


Не сум сигурен што е прашањето, ти треба идеја за решавање на задачата?
Ако да, имај предвид дека N = 100 е всушност мноогу мал број за компјутер, така да можеш да ги испробаш (со 4 for циклуси) сите валидни четворки. (Оваа задача е од тест натпревар со многу учесници и кратко времетраење, па задачите беа направено во однос на поедноставните теми - како во случајов, опсежно пребарување).


Инаку, ако сеуште читаш, постои и поефикасно решение. Имено, A*C=B*D е исто што и A/B=D/C (види како првите два броја во низата се лево од вторите два броја - за едните можеш да тргнеш од лево, за другите од десно). Сега, бидејќи делењето може да доведе до реален број како резултат, треба овие вредности да ги чуваш како дропки, и тоа е тоа. (Ама нема потреба од вакво решение, бидејќи првото функционира, и секогаш треба да го користите наједноставниот пристап)
MODDI



Joined: 27/12/2017 18:17:00
Messages: 39
Offline

MOI wrote:
MODDI wrote:Значи ја решавав задачава и кодот што го пишав броевите ги правеше во четворки и проверуваше дали последните броеви и првите проеви се според условот X*A=Y*B (XYAB), ама има решенија каде бројот што треба да се брише е во средината во низата, малку помош?


Не сум сигурен што е прашањето, ти треба идеја за решавање на задачата?
Ако да, имај предвид дека N = 100 е всушност мноогу мал број за компјутер, така да можеш да ги испробаш (со 4 for циклуси) сите валидни четворки. (Оваа задача е од тест натпревар со многу учесници и кратко времетраење, па задачите беа направено во однос на поедноставните теми - како во случајов, опсежно пребарување).


Инаку, ако сеуште читаш, постои и поефикасно решение. Имено, A*C=B*D е исто што и A/B=D/C (види како првите два броја во низата се лево од вторите два броја - за едните можеш да тргнеш од лево, за другите од десно). Сега, бидејќи делењето може да доведе до реален број како резултат, треба овие вредности да ги чуваш како дропки, и тоа е тоа. (Ама нема потреба од вакво решение, бидејќи првото функционира, и секогаш треба да го користите наједноставниот пристап)


Да ова решение работи но прашањето ми беше со моето решение некако да се реши задачава, бидејќи како што реков горе може да се случи број што е во средината на низата да се избрише, и после да провериме дали важи условот A*C=B*D од (ABCD).
MOI



Joined: 07/07/2010 16:31:48
Messages: 447
Offline

MODDI wrote:Да ова решение работи но прашањето ми беше со моето решение некако да се реши задачава, бидејќи како што реков горе може да се случи број што е во средината на низата да се избрише, и после да провериме дали важи условот A*C=B*D од (ABCD).

Не гледам како може да се реши со твојата идеја. За најлесно да видиш, замисли пример како овој

Точниот одговор тука е 210. Максималниот број на повикувања на res++ во твојата програма е N (во случајов 10).
 
Forum Index » Задачи од национални натпревари
Go to:   
Powered by JForum 2.1.8 © JForum Team