题解 | 游游的除2操作
游游的除2操作
https://www.nowcoder.com/practice/b797f46aa75145a0bbe112099f7cbd18
//活动地址: 牛客春招刷题训练营 - 编程打卡活动 #include <stdio.h> #include <stdlib.h> int cmp(int i, int min, int num, int *count_p) { while (min!=num) { if (num > min) { num /= 2; (*count_p)++; } else { min /= 2; (*count_p) += i; } } return min; } int main() { int n = 0; // 这题难就难在 因为可能会出现最小数是 负数 所以得用 无符号整数 unsigned int min = 0; unsigned int num = 0; int count = 0; // 输入 scanf("%d", &n); scanf("%d", &min); for (int i=1; i<n; i++) { scanf("%d", &num); min = cmp(i, min, num, &count); } printf("%d", count); } //活动地址: 牛客春招刷题训练营 - 编程打卡活动