切蛋糕 | ||||||
| ||||||
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 | ||||||
万祥 |
思路:
1、ans=最大拆分数-m+1
2、
暴力枚举两个数据;
最大拆分数=2、4、8、14...............................
那么f【i】=f【i-1】+tmp
tmp+=2
Ac代码:
#include<stdio.h>
#include<string.h>
using namespace std;
#define ll long long int
int main()
{
ll n,m;
while(~scanf("%lld%lld",&n,&m))
{
ll ans=2;
ll tmp=2;
int f=0;
n--;
while(n)
{
ans+=tmp;
tmp+=2;
n--;
}
//printf("%lld\n",ans);
if(ans-m+1>0)
printf("%lld\n",ans-m+1);
else
{
printf("N");
printf("\\");
printf("n\n");
}
}
}