80分求调
查看原帖
80分求调
1063855
xu_zhihao楼主2024/7/1 16:22

一个点T,一个点W

悬1关

#include<bits/stdc++.h>
using namespace std;
int main()
{
	long long n,k;
	cin>>n>>k;
	long long mx=((n-k+1)+n)*k/2;
	long long mn=ceil(sqrt(1ll+k)*k/2);
	//cout<<<<endl;
	long long ans=0;
	if(k%2==0)
	{
		for(long long i=mn;i*i<=mx;i++)
		{
			long long op=1.0*i*i;
			double h=1.0*op/k;
			if(h>n)break;
			long long u=h;
			if(u!=h-0.5)continue;
			//(2a+1)/2
			long long l=u-k/2+1;
			//long long r=u+1+k/2-1;
			//if(r>n)break;
			if(l<1)continue;
			ans++;
		}
	}
	else
	{
		for(long long i=mn;i*i<=mx;i++)
		{
			long long op=i*i;
			double w=1.0*op/k;
			long long u=w;
			if(w>n)break;
			if(w!=u)continue;
			//1 2 3 4
			long long l=u-k/2;
			//long long r=u+k/2;
			//if(r>n)break;
			if(l<1)continue;
			ans++;
		}
	}
	cout<<ans<<endl;
} 
2024/7/1 16:22
加载中...