20 20
查看原帖
20 20
1342927
binyage楼主2024/11/8 12:24
#include<bits/stdc++.h>
using namespace std;
int n,a,t; 
int main()
{
	cin>>a>>t;
    bool flag = false; 
    int superluckysub, superlucky, bigsuperlucky, num, ans;
    
    //找最小的超级幸运数 
    superluckysub = ceil(sqrt(a));
    superlucky = superluckysub*superluckysub;
	
	//轮询每一组数 
	while (t--)
	{
		cin>>n;
		int f = 0;
		//如果n小于a,那么最近幸运数就是这个数 
	    if (n <= a)
	    {
	    	if (n == superlucky)
	    	{
	    		cout<<"lucky"<<endl;
			}
			else
			{
				cout<<superlucky<<endl;
			}
	    
	    	continue; 
		}
		
		//如果这个数本身就是完全平方数,则直接输出 
		for (int i = ceil(sqrt(n)); ; i++)
		{
			//如果n是完全平方数或者n是完全平方数的倍数,则是幸运数 
			if (i*i == n || n%superlucky == 0)
			{
				cout<<"lucky"<<endl;
				f = 1;
			} 
			else
			{		
				bigsuperlucky = i*i;
			}
			break;
		}
		
		if (f == 1)
		{
			continue;
		}
		
		//如果走到这里,num^2一定是离n最近的一个完全平方数
	    int	aaa = ceil((1.0*n)/(1.0*superlucky))*superlucky;
	    if (aaa < n) aaa+=superlucky;
		cout<<min(aaa, bigsuperlucky)<<endl;
	}
		
	return 0;
}
2024/11/8 12:24
加载中...