Uradio sam zadatak i proverio resenje u code blocks ali mi za svaki test primer stoji da je odgovor pogresan.Da li neko mozda zna sta bi moglo biti u pitanju?
using namespace std;
int trougaoni(int n)
{
int zbir=0,i;
for(i=1;i<=n/4+1;i++){
zbir+=i;
if(zbir==n)return 1;
}
return 0;
N je veliko da bi radio sve ovo. Ne znam da li dobijas TLE? Iskoristi ovo: suma od 1 do k je k*(k+1)/2 tako da ides od 1 do nekog broja tako da je k*(k+1)/2 <=n i proveris da li je k*(k+1)/2 potpun kvadrat
Mislim da je ovde problem. Ako sam u pravu funkcija treba da proveri da li je n potpun kvadrat ali je moguce da sqrt(n)*sqrt(n)==n cak i kada n nije potpun kvadrat. Razlog zasto je tebi delovalo da ovo radi je zbog gubitka preciznosti cesce ce se desavati da funkcija vrati 0 ako broj nije potpun kvadrat mada to nece uvek biti slucaj.
Probaj umesto sqrt(n)sqrt(n)==n da pises
for(int j=2;jj<=n;j++)
{
if(j*j==n)return 1;
}
return 0;
Ovaj nacin je bolji jer ne mozes izgubiti preciznost, sve se radi s celim brojevima.