第一题 小午的222
n = input().strip()
if len(n) == 1:
# 只有一位数字,没有末尾0
first = int(n)
zeros = 0
else:
first = int(n[0])
zeros = len(n) - 1
计算最高位能被2整除的次数
count = 0
num = first
while num % 2 == 0:
count += 1
num //= 2
总次数 = 最高位的次数 + 末尾0的个数
print(count + zeros)
第二题 午枫的01树中心
n = int(input())
a = list(map(int, input().split()))
adj = [[] for _ in range(n + 1)]
for _ in range(n - 1):
u, v = map(int, input().split())
adj[u].append(v)
adj[v].append(u)
count = 0
for x in range(1, n + 1):
current_val = a[x - 1]
valid = True
for neighbor in adj[x]:
if a[neighbor - 1] == current_val:
valid = False
break
if valid:
count += 1
print(count)
第三题 午枫爱搬家2C++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
}