|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
【问题描述】
一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的数,例如1135是一个数位递增的数,而1024不是一个数位递增的数。 给定正整数 n,请问在整数 1 至 n 中有多少个数位递增的数?
【输入格式】30
【输出格式】 26
正确的代码是:
- if __name__ == '__main__':
- ans = 0
- n = int(input())
- for s in [str(i) for i in range(1, n + 1)]:
- flag = True
- for j in range(1, len(s)):
- if s[j - 1] > s[j]:
- flag = False
- break
- if flag:
- ans += 1
- print(ans)
复制代码
【输入格式】30
【输出格式】 26
自己写的代码:
- n=int(input())
- m=0
- for i in range(1,n+1):
- a=list(str(i))
- for n in range(1,len(a)):
- if a[n]<a[n-1]:
- break
- else:
- m+=1
- print(m)
复制代码
【输入格式】30
【输出格式】 17
自己写的代码和源代码差不多,只是flag判断条件,但是结果却是不一样的,自己分部输出的时候发现正确代码将1~9也作为了一个数位递增的数,但个人觉得1~9不能作为一个数位递增的数。
【问题】
1.能不能给我讲解下flag的作用及在正确代码中的作用?
2.1~9为什么也算是一个数位递增的数?
n=int(input())
m=0
for i in range(1,n+1):
a=list(str(i))
for n in range(1,len(a)): // 这一行,当遍历1-9,range(1,1),返回空,没有进去计数,因此少了9次
if a[n]<a[n-1]:
break
else:
m+=1
print(m)
还是加个flag方便点
|
|