melc varena.ro +> Melc
Un melc se plimbă în sus şi în jos pe trunchiul unui copac, pe un traseu vertical. El porneşte dintr-un punct START, merge o anumită distanţă în sus, schimbă direcţia şi merge o anumită distanţă în jos, apoi iarăşi schimbă direcţia etc.
Distanţele parcurse, alternând mereu direcţiile, sunt:
1 cm (în sus), 1 cm (în jos), 1 cm (în sus),
1 cm (în jos), 2 cm (în sus), 2 cm (în jos),
1 cm (în sus), 3 cm (în jos), 3 cm (în sus),
1 cm (în jos), 4 cm (în sus), 4 cm (în jos),
1 cm (în sus), 5 cm (în jos), 5 cm (în sus),
1 cm (în jos), 6 cm (în sus), 6 cm (în jos),
1 cm (în sus) …
Plimbarea continuă până la efectuarea unui număr total de n cm.
Cerinţă
Dându-se n, numărul de cm realizaţi în total, urmând regula de mai sus, se cere să se afle la câţi cm distanţă se află el faţă de punctul de pornire, START.
Date de intrare
Fişierul de intrare melc.in conţine un număr natural n.
Date de iesire
Fisierul de intrare melc.out va contine distanta ceruta.
Răspunsuri la întrebare
Răspuns de
2
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream f("melc.in");
ofstream g("melc.out");
int n, i=0, s=0, dir=-1, dist=0;
f >> n;
while (s<n)
{
++i;
dir*=-1; dist+=1*dir; s+=1; if (s==n) {break;}
dir*=-1; dist+=i*dir; s+=i; if (s==n) {break;}
dir*=-1; dist+=i*dir; s+=i; if (s==n) {break;}
}
if (dist<0) dist*=-1;
g << dist;
return 0;
}
Alte întrebări interesante
Chimie,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
dir ............ pt directie 1- miscare in sus, -1 - in jos
s ............. pt drumul parcurs