time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
You are given a set of 2n+12n+1 integer points on a Cartesian plane. Points are numbered from 00 to 2n2n inclusive. Let PiPi be the ii-th point. The xx-coordinate of the point PiPi equals ii. The yy-coordinate of the point PiPi equals zero (initially). Thus, initially Pi=(i,0)Pi=(i,0).
The given points are vertices of a plot of a piecewise function. The jj-th piece of the function is the segment PjPj+1PjPj+1.
In one move you can increase the yy-coordinate of any point with odd xx-coordinate (i.e. such points are P1,P3,…,P2n−1P1,P3,…,P2n−1) by 11. Note that the corresponding segments also change.
For example, the following plot shows a function for n=3n=3 (i.e. number of points is 2⋅3+1=72⋅3+1=7) in which we increased the yy-coordinate of the point P1P1 three times and yy-coordinate of the point P5P5 one time:
Let the area of the plot be the area below this plot and above the coordinate axis OX. For example, the area of the plot on the picture above is 4 (the light blue area on the picture above is the area of the plot drawn on it).
Let the height of the plot be the maximum yy-coordinate among all initial points in the plot (i.e. points P0,P1,…,P2nP0,P1,…,P2n). The height of the plot on the picture above is 3.
Your problem is to say which minimum possible height can have the plot consisting of 2n+12n+1 vertices and having an area equal to kk. Note that it is unnecessary to minimize the number of moves.
It is easy to see that any answer which can be obtained by performing moves described above always exists and is an integer number not exceeding 10181018.
Input
The first line of the input contains two integers nn and kk (1≤n,k≤10181≤n,k≤1018) — the number of vertices in a plot of a piecewise function and the area we need to obtain.
Output
Print one integer — the minimum possible height of a plot consisting of 2n+12n+1 vertices and with an area equals kk. It is easy to see that any answer which can be obtained by performing moves described above always exists and is an integer number not exceeding 10181018.
Examples
input
Copy
4 3
output
Copy
1
input
Copy
4 12
output
Copy
3
input
Copy
999999999999999999 999999999999999986
output
Copy
1
Note
One of the possible answers to the first example:
The area of this plot is 3, the height of this plot is 1.
There is only one possible answer to the second example:
The area of this plot is 12, the height of this plot is 3.
题意 给定笛卡尔坐标系(平面直角坐标系)x轴正方向上的一条线段OP_{2n}OP 2n (O为原点),长度为nn,每次操作定义为将这条线段上任意一个下标为奇数的点向上平移一个单位。经过若干次操作后会形成许多三角形。现给定正整数k,要求通过若干次操作使得三角形的面积之和为kk,求其中高最大的三角形其高的最小值是多少、 解题思路 既然要让高度最大的高尽量小,那么我们就要考虑“平均主义”,即:让每个三角形分摊总面积。设有nn个三角形,其高分别为h_1,h_2,...,h_nh 1 ,h 2 ,...,h n ,由于每次操作是平移下标为奇数的点,而奇数点必然在两个下标为偶数的点之间,因此这些三角形的底都为2。由三角形面积=底*高÷2,得2*(h_1+h_2+...+h_n)/2=k2∗(h 1 +h 2 +...+h n )/2=k,那么最大高的最小值就是n/kn/k. 签到题,难度较为基础,花了大概七八分钟推出来了式子。
代码分享
注意n%k!=0的情况要特判。
#include <iostream>
#include<stdlib.h>
using namespace std;
int main()
{
long long int n,i,m;
long long int ans;
cin>>n>>m;
if(m<=n)ans=1;
else if(m%n==0) ans=m/n;
else ans=m/n+1;
cout<<ans<<endl;
return 0;
}