1195 B sport mafia【数学】
解方程
比赛时候模拟半天做不出来,后来查了资料发现居然是数学题,简单的解方程就好了。
设操作二做了x次,则有(1+x)*x/2-(n-x)=k
题目保证一定有解,化简得,x=(sqrt(9+8(n+k))-3)/2
直接sqrt,有一个测试点溢出,所以手动开根号,okkk
#include<cstdio>
#include<cstring>
#include<functional>
#include<cctype>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
int n,k;
scanf("%d %d",&n,&k);
long long t=9+8*(n+k);
int res=0;
for(int i=1;;i++)
{
if(i*i==t)
{
res=i;
break;
}
}
res-=3;
res/=2;
printf("%d\n",n-res);
return 0;
}