【牛客刷题】每日一练——自守数

简介: 【牛客刷题】每日一练——自守数

hello,进来的小伙伴们,你们好呐!

系列专栏:【牛客刷题】

作者简介:一名双非本科的大三在读生,我很平凡,学会努力!

给大家推荐一个超级好用的刷题网站——牛客网!‘


一、自守数

数学的世界有很多很漂亮的数字或者数字集合,比如梅森数,哥德巴赫猜想,水仙花数,完全数,自守数。今天我们就一起来探究一下自守数。自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376。请求出n以内的自守数的个数。

输入格式:

第一行输入n,随后输入n个数m。

输出格式:

在一行中输出m以内自守数的个数,所有输出在一行内完成,末尾没有多余空格。

输入样例:

   5

   1

   2

   3

   4

   5

输出样例:

2 2 2 2 3

解题思想:本题第一个关键就是要先求出我们给出数字的位数,然后用n*n除以pow(10,number);便可得到我们的数字n,与之比较是否相等,若相等,则count++,因为0就是自守数,所以最后我们输出的时候是count+1;

   #include<stdio.h>

   #include<math.h>

   //计算位数

   int number(int m)

   {

       int count = 0;

       while(m!=0)

       {

           count++;

           m = m/10;

       }

       return count;

   }

   //计算切断之后的数

   int cutNumber(int x,int number)

   {

       return x%(int)pow(10,number);

   }

   int main()

   {

       int n = 0;

       int m=0;

       scanf("%d",&n);

       while(n--)

       {

           int count = 0;

           scanf("%d",&m);

           for(int i=1;i<=m;i++)

           {

               if(i==cutNumber(i*i,number(i)))

               {

                   count++;

               }

           }

           if(n==0)

           {

               printf("%d",count+1);

           }

           else

           {

               printf("%d ",count+1);

           }

       }

       return 0;

   }


相关文章
|
3月前
|
算法
【牛客周赛Round 27】题目讲解
【牛客周赛Round 27】题目讲解
|
4月前
|
存储 索引 Python
LeetCode刷题笔记(1)—— 两数之和
LeetCode刷题笔记(1)—— 两数之和
|
10月前
|
Python
牛客刷题之数学基础-约数
牛客刷题之数学基础-约数
43 0
|
前端开发 C语言 Cloud Native
【刷题日记】2. 两数相加
本次刷题日记的第 6 篇,力扣题为:2. 两数相加 ,中等
快乐数(力扣刷题)
快乐数(力扣刷题)
|
算法
Leecode202. 快乐数
Leecode202. 快乐数
59 0
刷 leetcode三个数的最大乘积 | 刷题打卡
刷 leetcode三个数的最大乘积 | 刷题打卡
81 0
|
Java
【牛客刷题】每日一练——回文字符串
【牛客刷题】每日一练——回文字符串
147 0