切蛋糕 | ||||||
|
||||||
Description | ||||||
有一个非常大的蛋糕,现在有一个圆形的杯子可以从正面倒扣到上面的方式把蛋糕分为一块一块的,杯子的厚度忽略不计。现在规定可以用杯子n次要求m个人每人至少分一块,是否能满足? | ||||||
Input | ||||||
每行输入两个整数n, m,(0 < n ,m< 10000000) 处理到文件结束 |
||||||
Output | ||||||
输出结果占一行,满足的话输出所有人中某个人最多能得到多少块 否则输出”N\n” |
||||||
Sample Input | ||||||
1 2 1 3 |
||||||
Sample Output | ||||||
1 N\n |
||||||
Source | ||||||
2012 Winter Holiday Contest 5 - Water Battle II | ||||||
Author | ||||||
万祥 |
找规律:
一个圆最多能把平面分成2个部分,
2个圆最多能把平面分成4个部分;
3个圆最多能把平面分成8个部分;
现在加入第4个圆,为了使分成的部分最多,第4个圆必须与前面3个圆都有两个交点,
如图所示,因此得6个交点将第4个圆的圆周分成6段圆弧,而每一段圆弧将原来的部分一分为二,即增加了一个部分,于是4个圆最多将平面分成8+6=14个部分,
同理,5个圆最多将平面分成14+8=22个部分,
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
long long n,m;
while(~scanf("%lld%lld",&n,&m))
{
long long nn=n*(n-1)+2;
if(nn<m)
{
printf("N\\n\n");
}
else
{
printf("%lld\n",nn-m+1);
}
}
return 0;
}