0
点赞
收藏
分享

微信扫一扫

PAT-B1103(C/C++代码解析)

寒羽鹿 2022-03-12 阅读 18

1103 缘分数 (20 分)
在这里插入图片描述
注意边界,1

#include <stdio.h>
#include <math.h>
long long isPing(long long n);
long long yuan(long long n);
int main ()
{
	long long m,n,flag=0;
	scanf ("%lld %lld",&m,&n);
	for (;m<=n;m++)
	{
		long long a=m*m*m-(m-1)*(m-1)*(m-1);
		if (isPing(a)==0||a==1)
		continue;
		else
		{
			long long b=isPing(a);
			if (yuan(b)==0)
			continue;
			else
			{
				flag=1;
				long long k=yuan(b);
				printf ("%lld %lld\n",m,k);
			}
		}
	}
	if (flag==0)
	printf ("No Solution");
	
	return 0;  
}

long long isPing(long long n)
{
	long long i=(long long)sqrt(1.0*n);
	if (i*i==n)
	return i;
	else
	return 0;
}

long long yuan(long long n)
{
	long long i=(long long)sqrt(1.0*n);
	for (;i>=1;i--)
	{
		if (n==i*i+(i-1)*(i-1))
		return i;
	}
	return 0;
}

举报

相关推荐

0 条评论