华为OJ:查找同构数的数量

描述: 
  • 找出1至n之间同构数的个数。同构数是这样一组数:它出现在平方数的右边。例如:5是25右边的数,25是625右边的数,5和25都是同构数。

详细描述:

  • 接口说明

原型:

  • intSearchSameConstructNum(int n);

输入参数:

    int n:查找1至n之间的全部同构数

返回值:

        int:1至n之间同构数的个数

 



#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "OJ.h"

/*
功能:找出1至n之间同构数的个数
输入:
int n:查找1至n之间的全部同构数
返回:
int:1至n之间同构数的个数
*/
int SearchSameConstructNum(int n)
{
	/*在这里实现功能*/
	int i = 0, j = 0,k = 0, lenq = 0, lenqq = 0;
	int count = 0;
	int q = 0, qq = 0;
	char strq[10] = { 0 }, strqq[30] = { 0 };

	for (i = 1; i <= n; i++)
	{
		/*判断i是否是同构数*/
		q = i;
		qq = i * i;

		memset(strq, 0, 10);
		memset(strqq, 0, 30);

		/*把整数转换为字符串*/
		sprintf_s(strq, "%d", q);
		sprintf_s(strqq, "%d", qq);

		/*求出长度*/
		lenq = strlen(strq);
		lenqq = strlen(strqq);
		
		for (j = lenq - 1, k = lenqq - 1; j >= 0; j--, k--)
		{
			if (strq[j] != strqq[k])
			{
				break;
			}
		}

		if (j == -1)
		{
			count++;
		}
	}


	return count;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dmfrm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值