70pts 最后三个点TLE 求调谢谢!
查看原帖
70pts 最后三个点TLE 求调谢谢!
604881
jimmyforever楼主2024/8/14 11:24
#include<iostream>
#include<cmath>
using namespace std;
int f(int x)
{
	int t=log10(x);
	int s=0;
	if(x%10==7)
	{
		s=1;
		goto f1;
	}
	for(int i=1;i<=t+1;i++)
	{
		int k=pow(10,i);
		if(x%(10*k)-x%k==7*k)
		{
			s=1;
			goto f1;
		}
	}
	f1:return s;
}
int main()
{
	int T;
	cin>>T;
	long long A[T]={0};
	for(int j=1;j<=T;j++)
	{
		int k;
		cin>>k;
		int m=pow(k,0.5);
		if(f(k)==1)
		{
			A[j-1]=-1;
			goto f3;
		}
		for(int i=1;i<=m;i++)
		{
			if(k%i==0&&f(i)+f(k/i)!=0)
			{
				A[j-1]=-1;
				goto f3;
			}
		}
		while(k>0)
		{
			f2:k++;
			m=pow(k,0.5);
			if(f(k)==1)
			{
				goto f2;
			}
			for(int i=1;i<=m;i++)
			{
				if(k%i==0&&f(i)+f(k/i)!=0)
				{
					goto f2;
				}
			}
			break;
		}
		A[j-1]=k;
		f3:cout<<A[j-1]<<endl;
	}
	return 0;
}
2024/8/14 11:24
加载中...