输入一个整数,求该整数上的各位数是否包含数字5,若有,则按从低到高的顺序输出第几位,若没有则输出-1
时间: 2023-09-09 16:04:34 浏览: 518
### 回答1:
输入格式:
一个整数 N。
输出格式:
若 N 上的各位数不包含数字 5,则输出 -1。否则按照从低到高顺序输出第几位包含数字 5,数字间用空格分隔,输出最后需要换行。
注意,数据可能很大,需使用高精度计算。
输入样例1:
100000000000000
输出样例1:
-1
输入样例2:
5000000000000000000000000002
输出样例2:
1 28
说明:
在这个例子中,长度为 25,第一个 5 出现在第 1 位,最后一个 5 出现在第 28 位。
### 回答2:
对于这个问题,我们可以通过取整数的个位、十位、百位...等等来逐个判断是否包含数字5。具体步骤如下:
1. 首先,我们用一个变量pos来记录数字5位于整数num的第几位。初始值为-1,表示没有数字5。
2. 然后,我们用一个变量count来记录当前处理了几位数字。初始值为0。
3. 接下来,我们进入一个循环,每次执行以下操作:
1) 取num的个位数,即num % 10。
2) 如果该个位数等于5,则将pos更新为count。
3) 将num右移一位,即num = num / 10。
4) 将count加1。
5) 判断num是否为0,如果是,则跳出循环。
4. 最后,我们判断pos的值是否为-1,如果是,则输出-1;否则输出pos。
下面是对应的Python代码实现:
```python
def check_digits(num):
pos = -1
count = 0
while True:
digit = num % 10
if digit == 5:
pos = count
num = num // 10
count += 1
if num == 0:
break
if pos == -1:
return -1
else:
return pos
# 测试代码
num = int(input("请输入一个整数:"))
pos = check_digits(num)
print("该整数上的各位数是否包含数字5:")
if pos == -1:
print("-1")
else:
print("从低到高的顺序输出第", pos+1, "位")
```
希望能对你有帮助!
### 回答3:
算法如下:
1. 输入一个整数。
2. 将整数转换为字符串。
3. 初始化一个空列表,用于存储结果。
4. 遍历字符串中的每一位数字:
- 如果当前数字是5,则将当前位的索引加一添加到结果列表中。
5. 判断结果列表是否为空:
- 如果为空,则输出-1。
- 如果不为空,则按从小到大的顺序输出列表中的元素。
以下是示例代码实现:
```python
num = int(input("请输入一个整数:")) # 输入一个整数
num_str = str(num) # 将整数转换为字符串
result = [] # 初始化结果列表
# 遍历字符串中的每一位数字
for i in range(len(num_str)):
digit = int(num_str[i])
if digit == 5:
result.append(i + 1) # 将当前位的索引加一添加到结果列表中
if result:
result.sort() # 按从小到大的顺序排序结果列表
print("该整数上包含数字5的位数为:", " ".join(map(str, result))) # 输出结果列表中的元素
else:
print("该整数上不包含数字5,输出-1") # 输出-1
```
注意:上述代码假设输入的整数为非负整数。如果输入的整数允许为负数,可以对其取绝对值后再进行计算。
阅读全文