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;
}