C 能够整除几次2 时间限制:1.00s内存限制:16.00MB 题目背景 请问一个正整数n能够整除几次2? 比如:4可以整除2次2,100可以整除2次2,9可以整除0次2。 输入格式 从键盘读入一个正整数n 输出格式 输出一个整数,代表n能够整除2的次数
时间: 2024-03-03 16:50:57 浏览: 109
好的,我已经明白了你的问题。这道题目可以通过不断地将 n 除以 2,直到 n 不再是偶数为止,这个过程中,每除以一次 2,次数就加一。代码实现如下:
```c
#include <stdio.h>
int main() {
int n, count = 0;
scanf("%d", &n);
while (n % 2 == 0) {
n /= 2;
count++;
}
printf("%d\n", count);
return 0;
}
```
你可以通过这个代码来解决这个问题。
相关问题
满足要求的数字个数 时间限制:1.00s内存限制:16.00MB 题目背景 找出1-N中能被5整除且至少有一位数字是5的所有整数的个数. 输入格式 输入只有一行,只有1个整数N。 输出格式 输出只有一行(这意味着末尾有一个回车符号),包括1个整数。
题目分析:
题目中要求找出在 $1$ 到 $N$ 之间能被 $5$ 整除且至少有一位数字是 $5$ 的所有整数的个数。因此我们可以遍历 $1$ 到 $N$ 之间的整数,然后判断是否满足条件。
判断一个数能否被 $5$ 整除,可以直接使用取模运算。判断至少有一位数字是 $5$,可以将该数转化为字符串,然后判断字符串中是否包含字符 '5'。
时间复杂度为 $O(N \log N)$。
C++ 代码实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
int n;
cin >> n;
int cnt = 0;
for (int i = 1; i <= n; i++) {
if (i % 5 == 0) {
string s = to_string(i);
if (s.find('5') != string::npos) {
cnt++;
}
}
}
cout << cnt << endl;
return 0;
}
```
D 与7无关的数 时间限制:1.00s内存限制:16.00MB 题目背景 一个整数,如果这个数能够被7整除,或者其中有一位是7,我们称为这个数是与7有关的数。比如:14能被7整除,17有一位为7,这两个数都是与7有关的数。 请你编程求出1~n(n<=999)中,与7无关的数的总和是多少? 比如1~10中与7无关的数的和为:1+2+3+4+5+6+8+9+10=48。 输入格式 一个整数n(n<=999)
好的,我已经明白了你的问题。这道题目需要判断每一个数是否与 7 有关,如果不是,则将其加入总和中。可以通过以下代码实现:
```c
#include <stdio.h>
int is_related_to_7(int n) {
if (n % 7 == 0) {
return 1; // 能被 7 整除
}
while (n) {
if (n % 10 == 7) {
return 1; // 有一位是 7
}
n /= 10;
}
return 0; // 既不是 7 的倍数,也没有一位是 7
}
int main() {
int n, sum = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
if (!is_related_to_7(i)) {
sum += i;
}
}
printf("%d\n", sum);
return 0;
}
```
你可以通过这个代码来解决这个问题。
阅读全文