[蓝桥杯2016决赛]平方末尾的C语言实现

题目描述
能够表示为某个整数的平方的数字称为“平方数”。比如,25,64
虽然无法立即说出某个数是平方数,但经常可以断定某个数不是平方数。
因为平方数的末位只可能是:[0, 1, 4, 5, 6, 9] 这6个数字中的某个。
所以,4325435332必然不是平方数。
如果给你一个2位或2位以上的数字,你能根据末位的两位来断定它不是平方数吗?
请计算一下,一个2位以上的平方数的最后两位有多少种可能性?

这道题我刚开始读了贼久的题,以为有关系,结果发现没什么关系。。。。直接遍历2位以上的找出最后两位的个数就行了。当然也是遍历不完的,遍历大多数,大概能把最后两位遍历完就行了,最后答案是22

#include<stdio.h>
int ping(int n)
{
	int m;
	n = n*n;
	m = n%10;
	n = n/10;
	m += (n%10)*10;
	return m;
}
int main()
{
	int i,j,a[100],m,s=0,jec;
	for(i=10;i<10000;i++) //直接就找了个较大的数来限制 
	{
		m = ping(i); //取最后两位 
		jec = 1;
		for(j=0;j<s;j++)  
		{
			if(m == a[j])
			{
				jec = 0;
			}
		}
		if(jec == 1)  //把最后两位数都存在这个数组里面 
		{
			a[s] = m;
			s++;
		}
	}
	printf("%d\n",s);
	return 0;
 } 

猜你喜欢

转载自blog.csdn.net/qq_46293423/article/details/104732063