将一个长整型数 s 的每一位数位上的偶数依次取出来,构成一个新的数 t ,其高位仍在高位,低位仍在低位,例如: s =87653142时, t 中的数为8642
时间: 2024-10-18 19:08:12 浏览: 65
将一个长整型数`s`转换成只包含偶数位的新数`t`的过程,通常涉及到按位操作(bitwise operations)。首先,你需要创建一个新数`t`,并将`s`的每一位都检查是否为偶数。如果是偶数,则将其添加到`t`对应的位上;如果不是,则跳过。这通常通过位与运算(AND)和位右移运算(RIGHT SHIFT)来实现。以下是步骤概览:
1. 初始化一个空的长整型变量`t`,其初始值设为0。
2. 对于`s`的每一位(从最低位到最高位),计算`s`与`1 << (位数-1)`的结果。这会检查当前位是否为1(因为只有当位为1时,与1相与才会得到1,其他位为0都会变为0)。
3. 如果结果不为0,说明该位是奇数,跳过;否则,将`s`与`1 << (位数-1)`的结果左移一位,并加到`t`上,以便保留该偶数位。
在C++中,可以这样做:
```cpp
long long s, t = 0;
scanf("%lld", &s);
while (s) {
if (s & 1) { // 如果s的最后一位是偶数
t <<= 1; // 向左移动一位,准备接收新的偶数位
if (t > INT_MAX) break; // 避免溢出(如果超过最大整数值)
}
t |= s & 1; // 或者进位到t,添加新的偶数位
s >>= 1; // 右移一位,去掉已检查的最低位
}
printf("转换后的数t: %lld\n", t);
```
相关问题
将一个长整型数s的每一位数位上的偶数依次取出来,构成一个新的数t,其高位仍在高位,低位仍在低位
,请问如何实现?
可以将长整型数s转换为字符串str,然后遍历字符串中的每一位,判断其是否为偶数,如果是则将其加入到一个新的字符串中。最后将新的字符串转换为一个长整型数就可以得到新数t。以下是具体实现代码:
```python
s = 123456789
str_s = str(s)
str_t = ''
for c in str_s:
if int(c) % 2 == 0:
str_t += c
t = int(str_t)
print(t)
```
输出结果为2468。
将一个长整型数s的每一位数位上的偶数依次取出来,构成一个新的数t,其高位仍在高位,低位仍在低位,
但是中间不含任何奇数。如果s中没有偶数,则t为0。
例如,若s=123456789,则t=2468;若s=13579,则t=0。
代码实现:
```python
def even_digits(s):
# 将长整型数s转换为字符串
s_str = str(s)
# 初始化新数t为0
t = 0
# 遍历s的每一位数位上的数字
for digit in s_str:
# 如果该数字是偶数,则将其加入新数t的末尾
if int(digit) % 2 == 0:
t = t * 10 + int(digit)
return t
```
测试代码:
```python
s1 = 123456789
s2 = 13579
s3 = 24680
print(even_digits(s1)) # 输出 2468
print(even_digits(s2)) # 输出 0
print(even_digits(s3)) # 输出 24680
```
阅读全文