题目描述
小明非常不喜欢数字 2,包括那些数位上包含数字 2 的数。如果一个数的数位不包含数字 2,小明将它称为洁净数。
请问在整数 1 至 nn 中,洁净数有多少个?
输入描述
输入的第一行包含一个整数 n(1≤n≤106)n(1≤n≤106)。
输出描述
输出一行包含一个整数,表示答案。
输入输出样例
示例
输入
30
输出
18
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
import os
import sys
# 请在此输入您的代码
def water():
n=int(input())
cout=0
for i in range(1,n+1):
if '2' in str(i):
continue
else:
cout+=1
print(cout)
water()
这段代码主要用于解决在整数 1 至 n
中寻找洁净数(即数位不包含数字 2 的数)的数量问题,它涉及以下几个知识点:
1. 输入处理
- 获取用户输入:借助
input()
函数从标准输入读取用户输入的整数n
,同时使用int()
函数把输入的字符串转换为整数类型。这是因为input()
函数返回的是字符串类型,而在后续计算中需要使用整数类型。
2. 循环结构
for
循环:运用for
循环遍历从 1 到n
的所有整数。range(1, n + 1)
会生成一个包含从 1 到n
的整数序列,这样就能逐个检查这些整数是否为洁净数。
3. 条件判断
if
语句:在循环里使用if
语句来判断当前整数是否包含数字 2。具体做法是将整数转换为字符串,然后使用in
操作符检查字符串中是否包含字符 '2'。若包含,就使用continue
语句跳过当前循环,继续检查下一个整数;若不包含,则将计数器cout
加 1。
4. 字符串操作
- 整数转字符串:使用
str()
函数把整数转换为字符串,这样就能利用字符串的特性进行字符检查。字符串是由字符组成的序列,可以使用in
操作符来检查某个字符是否存在于字符串中。
5. 输出处理
- 打印结果:使用
print()
函数将最终的洁净数数量输出到标准输出。
6. 函数定义与调用
- 函数定义:定义了一个名为
water()
的函数,函数内部实现了寻找洁净数数量的逻辑。 - 函数调用:在代码的最后调用
water()
函数,从而执行函数内部的逻辑。