Go: package main

import "fmt"

func main() {
	var v float64
	for {
		i, _ := fmt.Scan(&v)
		if i == 0 {
			break
		}
		t := v / 9.8
		y := 4.9 * t * t

		N := 0
		for {
			N++
			if height := 5*N - 5; float64(height) > y {
				fmt.Println(N)
				break
			}
		}
	}
}

C++: #include <iostream>
using namespace std;
int main(void){
    double v;
    double t; //球が割れるのに必要な最低速度になるのは落下し始めてから何秒後か
    int y; //t秒後に物体が落下した距離
    int N; //球が割れる建物の階の最小値

    while(cin >> v){
        t = v / 9.8;
        y = 4.9 * t * t;
        N = ((y + 1) + 5) / 5; 

        cout << N + 1<< endl;
    }
}

C++: #include<iostream>

int main(){

	double min_v;
	while (std::cin >> min_v){

		double t = min_v / 9.8;
		double sum = 4.9*t*t;

		std::cout << (int)(sum + 5) / 5 + 1 << std::endl;
	}

	return 0;
}

C++: #include <iostream>
#include <vector>

using namespace std;

int main(int argc, char *argv[]) {
  vector<int> result;
  double v, t, h;

  while (cin >> v) {
    t = v / 9.8;
    h = 4.9 * t * t;
    int n = 1;
    while (true)
      if (5 * (n - 1) >= h) {
        result.push_back(n);
        break;
      } else {
        n++;
      }
  }

  for (int i = 0; i < result.size(); i++)
    cout << result[i] << endl;
  return 0;
}

C++: #include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
#define int long long
signed main(){
	double a;
	while( scanf("%lf", &a) != EOF ){
		double y = a*a/2/9.8;
		int n = y/5 + 2;
		cout << n << endl;
	}
	return 0;
}

C++: #include <iostream>
#include <algorithm>
using namespace std;
int main(){
	double v,y;
	int n;
	while(cin>>v){
		n=(((v*v/19.6)+5)/5)+1;
		cout<<n<<endl;
		}
    return 0;
    }

C++: //#define _USE_MATH_DEFINES
#include <cmath>
#include <iostream>
//#include <stdio.h>
//#include <stdlib.h>
//#include <iomanip>
#include <vector>
//#include <string>
//#include <algorithm>
//#include <functional>
//#include <time.h>
//#include <sstream>
//#include <queue>

using namespace std;


int main(){

	const int H = 5;
	double v, t, y;
	long long ans;

	while (cin >> v){
		if (v <= 0) ans = 1;
		else{
			t = v / 9.8;
			y = 4.9 * t * t;
			ans = (long long)((y + 10 + 1) / H);
		}
		cout << ans << endl;
	}


	return 0;
}

C++: #include <iostream>
int main(){for(double v;std::cin>>v;)std::cout<<(int)(v*v/19.6+10)/5<<"\n";}

C++: #include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;

int main(){
	double v, t;
	int n;
	while(cin >> v){
	n = 0;
	for(int i = 0; 4.9*(v/9.8)*(v/9.8) > 5*i-5 ; i++){
		n++;
	}
	cout << n << endl;
	}
}

C++: #include<stdio.h>
#include<math.h>

int main()
{
double a;
while(~scanf("%lf",&a))
{
int ans=ceil(a*a/98)+1;
printf("%d\n",ans);
}
return 0;
}

C++: #include<iostream>
using namespace std;

int main(){

  int n;
  double v,t,y;

  while(cin >> v){

    t = v/9.8;
    y = 4.9 * t * t;

    int i = 0;

    while(5*i-5 < y) i++;

    cout << i << endl;
  }
}

C++: //0024 Physical Experiments

// élª¢Êu©çKXð©Rº³¹é
//v=9.8tAy=4.9t^2ÆÈé
//ªêéÌÉKvÈÅá¬xª^¦çêéÆ«A­È­ÆàrÌ½K©çÆ¹Îæ¢©
//½¾µArÌNKÌ³Í5N-5Æ·é

#include<iostream>
#include<cmath>
using namespace std;
double Square(double x){return x*x;}
int main(void)
{
	double y, v, t;
	while(cin >> v)
	{
		t = v/9.8;
		y = 4.9*Square(t);
		//y >= 5N-5
		//N <= y/5+1
		int N = static_cast<int>(ceil(y/5.0+1.0));
		cout << N << endl;
	}
	return 0;
}

C++: #include<iostream>
#include<cmath>
using namespace std;

int main()
{
    int y, t, v, nv, cont = 1;
    cin >> nv;
    
    y = (nv * nv) /19.6;

    while(y>0){	
	y -= 5;
	cont++;
    }
    
    cout << cont << endl;
    
}

C++: #define _USE_MATH_DEFINES
#include<iostream>
#include<string>
#include<queue>
#include<cmath>
#include<map>
#include<set>
#include<list>
#include<iomanip>
#include<vector>
#include<random>
#include<functional>
#include<algorithm>
#include<stack>
#include<cstdio>
#include<bitset>
#include<unordered_map>
#include<climits>
#include<fstream>
using namespace std;
///////////////////library zone!!!!!!!!!!!!!!!!!!!!!!!!!!!!
typedef long long ll;
typedef long double ld;
#define all(a) (a).begin(),(a).end()
#define EPS (1e-7)
const ll Mod = 1000000007;
const ll mod = 998244353;
struct H {
	ll x, y;
	bool operator<(const H &b) const {
		if (x != b.x) return x < b.x;
		return y < b.y;
	}
	bool operator>(const H &b) const {
		if (x != b.x) return x > b.x;
		return y > b.y;
	}
	bool operator==(const H &b) const { return x == b.x&&y == b.y; }
	bool operator!=(const H &b) const { return (*this) != b; }
};
struct P {
	ll pos, cost;
	bool operator<(const P &b) const { return cost < b.cost; }
	bool operator>(const P &b) const { return cost > b.cost; }
};
struct B {
	ll to, cost;
};
struct E {
	ll from, to, cost;
	bool operator<(const E &b) const { return cost < b.cost; }
	bool operator>(const E &b) const { return cost > b.cost; }
};
template<typename T, typename U>
void chmin(T &a, U b) {
	if (a > b) a = b;
}
template<typename T, typename U>
void chmax(T &a, U b) {
	if (a < b) a = b;
}
template<typename T>
T max_0(T a) {
	if (a < 0) return 0;
	return a;
}
template<typename T>
T min_0(T a) {
	if (a > 0) return 0;
	return a;
}
ll read() {
	ll u;
	ll k = scanf("%lld", &u);
	return u;
}
ll gcd(ll i, ll j) {
	if (i > j) swap(i, j);
	if (i == 0) return j;
	return gcd(j%i, i);
}
ll mod_pow(ll x, ll n, ll p) {
	ll res = 1;
	while (n > 0) {
		if (n & 1) res = res * x % p;
		x = x * x % p;
		n >>= 1;
	}
	return res;
}//x^n%p
vector<string>split(string s, char c = ' ') {
	vector<string>vec;
	string h = "";
	for (int i = 0; i < s.size();) {
		int j = i;
		while (j < s.size() && s[j] != ' ') {
			h += s[j++];
		}
		if (h.size() > 0) vec.push_back(h);
		h = "";
		i = j + 1;
	}
	return vec;
}
const ll Inf = 3023372036854775807;
const int inf = 1500000000;
#define int long long
//----------------------------------------------------
class Vec2 {
public:
	ld x, y;
	Vec2() { x = 0, y = 0; }
	Vec2(ld x, ld y) :x(x), y(y) {}
	ld length() {
		return sqrt(x*x + y * y);
	}
	Vec2 normal() {
		ld len = this->length();
		if (len == 0) return Vec2(x, y);
		x /= len, y /= len;
		return *(this);
	}
	Vec2 operator+(Vec2 vec) {
		return Vec2(x + vec.x, y + vec.y);
	}
	Vec2 operator-(Vec2 vec) {
		return Vec2(x - vec.x, y - vec.y);
	}
	template<typename T>
	Vec2 operator*(T cons) {
		return Vec2(x*cons, y*cons);
	}
	ld operator*(Vec2 vec) {
		return x * vec.x + y * vec.y;
	}
	ld operator%(Vec2 vec) {
		return x * vec.y - y * vec.x;
	}
	bool operator==(Vec2 vec) {
		return abs(x - vec.x) < EPS && abs(y - vec.y) < EPS;
	}
};
ld dot(Vec2 a, Vec2 b) {
	return a.x*b.x + a.y*b.y;
}
ld cross(Vec2 a, Vec2 b) {
	return a.x*b.y - a.y*b.x;
}
ld areaIntegral(Vec2 a, Vec2 b) {
	return abs(a.x*b.y - a.y*b.x) / 2.0;
}
class Vec3 {
public:
	ld x, y, z;
	Vec3() { x = 0, y = 0, z = 0; }
	Vec3(ld x, ld y, ld z) :x(x), y(y), z(z) {}
	ld length() {
		return sqrt(x*x + y * y + z * z);
	}
	void normal() {
		ld len = this->length();
		if (len == 0) return;
		x /= len, y /= len, z /= len;
	}
	Vec3 operator+(Vec3 vec) {
		return Vec3(x + vec.x, y + vec.y, z + vec.z);
	}
	Vec3 operator-(Vec3 vec) {
		return Vec3(x - vec.x, y - vec.y, z - vec.z);
	}
	Vec3 operator*(int cons) {
		return Vec3(x*cons, y*cons, z*cons);
	}
	ld operator*(Vec3 vec) {
		return x * vec.x + y * vec.y + z * vec.z;
	}
};
ld dot(Vec3 a, Vec3 b) {
	return a.x*b.x + a.y*b.y + a.z*b.z;
}
class Line {
public:
	Vec2 from, to;
	Line(Vec2 from, Vec2 to) :from(from), to(to) {}
};
Line getPerpendicularBisector(Line line) {
	int cx = (line.from.x + line.to.x) / 2, cy = (line.from.y + line.to.y) / 2;
	Vec2 p = Vec2(cx + (line.from.y - line.to.y), cy + (line.to.x - line.from.x));
	return Line(Vec2(cx, cy), p);
}
signed main() {
	ld v;
	while (cin >> v) {
		ld t = v / 9.8;
		ld y = 4.9*t*t;
		cout << ceil((y + 5) / 5) << endl;
	}
}