首页 > 试题广场 >

自守数

[编程题]自守数
  • 热度指数:156791 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}自守数是指这样一个自然数 x,其平方的尾数等于自身。更具体的说,即 x^2 的末尾若干位恰好等于 x,例如:
\hspace{23pt}\bullet\, 25^2=625625 的末尾两位恰好是 25
\hspace{23pt}\bullet\, 76^2=57765776 的末尾两位恰好是 76
\hspace{23pt}\bullet\, 9\,376^2=87\,909\,37687\,909\,376 的末尾四位恰好是 9\,376
\hspace{15pt}现在,对于给定的 n,请统计 0n 之间的自守数个数。

输入描述:
\hspace{15pt}输入一个整数 n \left(1 \leqq n \leqq 10^4\right) 代表自守数的范围。


输出描述:
\hspace{15pt}输出一个整数,代表 0n 之间的自守数个数。
示例1

输入

25

输出

5

说明

\hspace{15pt}在这个样例中,0,1,5,6,25 是自守数。
import sys

n=int(input())
m=list(map(int,input().split()))

num1,num2,count1=0,0,0

for a in m:
    if(a>0):
        num1+=1
        count1+=a
    elif(a<0):
        num2+=1

if (count1==0):
    print(num2,0.0)
else:
    print(num2,round(count1/num1,1))


发表于 2024-11-01 22:18:16 回复(0)
import sys
n=input()
cou=0
for i in range(int(n)+1):
        d=list(str(i))
        lens=len(d)
        c=i**2
        pv=list(str(c))
        p=pv[-lens::1]
        f=''.join(p)
        if str(i)==f:
            cou+=1
print(cou)


编辑于 2024-04-14 00:02:46 回复(0)
num = int(input())
count = 0
for i in range(num+1):
    flag = 0
    for j in [10, 100, 1000, 10000]:
        if i < j and (i * i) % j == i and not flag:
            count += 1
            flag = 1
print(count)


发表于 2022-09-14 12:01:34 回复(0)
while True:
    try:
        n = int(input())
        count = 0
        for i in range(n+1):
            if str(i)  == str(i**2)[(len(str(i**2))-len(str(i))):len(str(i**2))]:
                count += 1
        print(count)             
    except:
        break
发表于 2022-09-04 08:29:07 回复(0)
while True: try:
        n=int(input())
        l=[] for i in range(n+1):
            x=i**2  y=str(x)
            z=str(i) if y[-len(z):] == z:
                l.append(i) print(len(l)) except: break
发表于 2022-08-31 01:40:52 回复(0)
while True:
    try:
        n = int(input())
        L = []
        for i in range(n+1): 
            s = str(i**2) #将整数的平方变为str
            weishu = s[-len(str(i)):] #字符串取位数
            intweishu = int(weishu) #把位数变为int
            if intweishu == i:
                L.append(i) 
        print(len(L))
    except:
        break

发表于 2022-08-29 15:48:09 回复(0)
n = int(input())

li = []  #存放满足条件的数
for i in range(n+1):
    a = str(i)
    b = str(i ** 2)
    if a == b[-len(a):]:
        li.append(i)
print(len(li))


发表于 2022-08-25 18:04:44 回复(0)
def iszss(num:int):
    m = str(num**2)
    s = str(num)
    index = 0-len(s)
    return True if s == m[index:] else False

n = int(input())
res = 0
for i in range(n+1):
    if iszss(i):
        res += 1
print(res)

发表于 2022-08-10 21:06:59 回复(1)
while True:
    try:
        n = int(input())
        count = 0
        for i in range(n+1):
            s = i ** 2
            if i == int(str(s)[-len(str(i)):]):
                count += 1
        print(count)
    except:
        break
发表于 2022-08-03 21:55:04 回复(0)
a=int(input())
cc=0
for i in range(0,a+1):
    ii=str(i*i) 
    ic=str(i)
    d=ii[len(ii)-len(ic):len(ii)]
    if d==ic:
        cc=cc+1
print(cc)

发表于 2022-08-03 16:59:02 回复(0)
n = int(input())
num = 0
for i in range(n+1):
    x = i * i
    length = len(str(i))
    # 用字符串比较
    if str(i) == str(x)[-length:]:
        num += 1
print(num)

发表于 2022-07-30 19:22:59 回复(0)
count = 0
for i in range(int(input())+1):
    if str(i**2).endswith(str(i)):
        count = count +1
print(count)

发表于 2022-07-25 22:40:03 回复(0)
data = int(input())
sum1 = 0
for i in range(data+1):
    leni2 = len(str(i**2))
    leni1 = len(str(i))
    if str(i**2)[-leni1:] == str(i):
        sum1 += 1
print(sum1)
发表于 2022-07-18 10:56:42 回复(0)
遗忘了endswith的写法
n = int(input())
l = []
for i in range(n+1):
    if (str(i**2))[-len(str(i)):] == str(i):
        l.append(i)
print(len(l))


发表于 2022-07-11 11:13:43 回复(0)
def fun(n):
    n = int(n)
    m = n * n
    str1 = str(n)[::-1]
    str2 = str(m)[::-1]
    if str1 == str2[:len(str1)]:
        return 1
    else: return 0

n = int(input())
count = 0
for i in range(0,n+1):
    if fun(i):
        count += 1
print(count)

发表于 2022-07-01 10:45:44 回复(0)
while True:
    try:
        num = int(input())
        a = 0
        for i in range(num+1):
            if str(i**2)[-len(str(i)):] == str(i):
                a+=1
            else:
                continue
        print(a)
    except:
        break
发表于 2022-06-26 11:10:56 回复(0)
x = int(input())
res = 0
for i in range(x+1):
    if str(i) == str(i*i)[-len(str(i)):]:
        res += 1
print(res)

发表于 2022-06-08 17:29:43 回复(0)
while True:
    try:
        s = int(input()) 
        count = 0
        for i in range(s+1):          
            if i == 0 or i ==1:
                count += 1
            elif i > 1:
                j = i ** 2
                if str(i)== str(j)[-len(str(i)):]:
                    count += 1
        print(count)       
    except:
        break
发表于 2022-06-06 22:10:55 回复(0)