[华为机试练习题]58.查找同构数的数量

题目

描述:

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

详细描述:

接口说明
原型:

intSearchSameConstructNum(int n);

输入参数:

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

返回值:

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

练习阶段:

初级

代码

/*---------------------------------------
*   日期:2015-07-05
*   作者:SJF0115
*   题目:查找同构数的数量
*   来源:华为机试练习题
-----------------------------------------*/
#include <iostream>
#include "OJ.h"
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;

/*
功能:找出1至n之间同构数的个数
输入:
    int n:查找1至n之间的全部同构数
返回:
    int:1至n之间同构数的个数
*/
int SearchSameConstructNum(int n){
    int square,tmp;
    int count = 0;
    for(int i = 1;i <= n;++i){
        square = i * i;
        tmp = i;
        while(tmp){
            if(square % 10 != tmp % 10){
                break;
            }//if
            square /= 10;
            tmp /= 10;
        }//while
        if(tmp == 0){
            ++count;
        }//if
    }//for
    return count;
}
时间: 2024-09-19 09:15:07

[华为机试练习题]58.查找同构数的数量的相关文章

[华为机试练习题]48.阿姆斯特朗数

题目 描述: 如果一个正整数等于其各个数字的立方和,则该数称为阿姆斯特朗数(亦称为自恋性数),1除外,如407 = 43+03+73就是一个阿姆斯特朗数.试编程求n(n ≤ 65536)以内的所有阿姆斯特朗数. 接口说明 原型: int CalcArmstrongNumber(int n); 输入参数: int n: n ≤ 65536 返回值: n以内的阿姆斯特朗数的数量 练习阶段: 初级 代码 /*--------------------------------------- * 日期:20

[华为机试练习题]33.二叉搜索树

题目 描述: 判断两序列是否为同一二叉搜索树序列 题目类别: 树 难度: 中级 运行时间限制: 10Sec 内存限制: 128MByte 阶段: 入职前练习 输入: 开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树. 接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树. 输出: 如果序列相同则输出YES

[华为机试练习题]29.Arrange an Array to Form a Smallest Digit

题目 描述: Question: Input an array of positive integers, arrange the integers to form new digits, and output the smallest digit among all the new ones. Input Example 1: {2, 1} Output Example 1: 12 Input Example 2: {32, 321} Output Example 2: 32132 Input

[华为机试练习题]53.整数相除(AC 但还有bug)

题目 描述: 实现接口: /--------------------------------------------------------------------------------- Description : 整数相除. Input : unsigned int dividend :被除数,取值为无符号整数. unsigned int divisor: 除数,取值为无符号整数. Output : Char *pResult : 运算结果. Return Value : 0:成功: -1

[华为机试练习题]36.简单错误记录

题目 描述: 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号. 处理: 1. 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加: 2. 超过16个字符的文件名称,只记录文件的最后有效16个字符: 3. 输入的文件可能带路径,记录文件名称不能带路径. 题目类别: 字符串 难度: 中级 运行时间限制: 10Sec 内存限制: 128MByte 阶段: 入职前练习 输入: 一行或多行字符串.每行包括带路径文件名称,行号,以空格

[华为机试练习题]47.整型反序

题目 描述: 简要描述:给出一个不多于5位的整数, 进行反序处理 要求: 1.求出它是几位数 2.分别输出每一位数字 3.按逆序输出各位数字,例如原数为321,应输出123(仅数字间以空格间隔, 负号与数字之间不需要间隔) 例如: 输入: 12345 输出: 5 1 2 3 4 5 54321 注意:如果是负数,负号加在第一个数字之前, 与数字没有空格间隔 比如 输入: -12345 输出: 5 -1 2 3 4 5 -54321 函数原型: /* 输入: iInput: 位数不大于5的整数 输

[华为机试练习题]60.水仙花数

题目 描述: 水仙花数又称阿姆斯特朗数. 水仙花数是指一个n 位数( n≥3 ),它的每个位上的数字的n 次幂之和等于它本身.(例如:1^3 + 5^3 + 3^3 = 153) 求输入的数字是否为水仙花数 练习阶段: 初级 代码 /*--------------------------------------- * 日期:2015-07-05 * 作者:SJF0115 * 题目:水仙花数 * 来源:华为机试练习题 ----------------------------------------

[华为机试练习题]52.Fibonacci数列的计算和转换

题目 描述: 介绍: 一.Fibonacci数列: 1,1,2,3,5,8,13,15,28,- 它们有这样的规律:第1和第2的数字都是1,第3个数字是前2个数字之和,第4个数字是第2,第3个数字之和. 即Fn = F(n-1) + F(n-2). 二.扩展Fibonacci数列: 扩展Fibonacci数列,前2个数字可以任意输入,例如前2个数字为 -1,1,那么后续的数字就是:0,1,1,2,3,5,8,- 题目要求: 一.请实现如下函数功能: 输入扩展Fibanacci数列的前2个数字和要

[华为机试练习题]24.删除链表中的重复节点、剩余节点逆序输出

题目 描述: 题目描述: 输入一个不带头节点的单向链表(链表的节点数小于100),删除链表中内容重复的节点(重复的节点全部删除),剩余的节点逆序倒排. 要求实现函数: void vChanProcess(strNode * pstrIn,strNode * pstrOut); [输入] pstrIn:输入一个不带头节点的单向链表 [输出] pstrOut:删除内容重复的节点(重复的节点全部删除),剩余节点逆序输出(不带头节点,链表第一个节点的内存已经申请). [注意]只需要完成该函数功能算法,中