c++题目描述 给定n个四位数,求出其中满足以下条件的数的个数: 个位上的数字加上十位上的数字的结果为偶数。 输入格式 输入为两行,第一行为个数n,第二行为n个四位数,数与数之间以一个空格分开。(1<=n<=100)。 输出格式 输出为一行,包含一个整数,表示满足条件的四位数的个数。
时间: 2024-03-22 20:41:39 浏览: 22
以下是 C++ 的解法:
```c++
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int count = 0;
for (int i = 0; i < n; i++)
{
int num;
cin >> num;
int units_digit = num % 10;
int tens_digit = (num / 10) % 10;
if ((units_digit + tens_digit) % 2 == 0)
{
count++;
}
}
cout << count << endl;
return 0;
}
```
首先输入一个整数 n 表示有多少个四位数,然后用一个循环输入 n 个四位数,对于每个四位数,分别取出个位和十位上的数字,判断它们的和是否为偶数,如果是,计数器加一。最后输出计数器的值即可。
相关问题
c++给定若干个四位数,求出其中满足以下条件的数的个数: 奇数位上的数字加起来的和,大于偶数位上的数字加起来的和。
可以采用以下的思路:
1. 对于每个四位数,可以通过除以10和取模10的操作得到它的各位数字。
2. 通过判断奇偶性,可以将奇数位上的数字和偶数位上的数字分别相加,得到它们的和 sum_odd 和 sum_even。
3. 判断 sum_odd 是否大于 sum_even,如果是,则满足条件,计数器加一。
4. 对于所有给定的四位数,重复上述操作,最后输出计数器的值即可。
以下是具体的代码实现:
```c++
#include <iostream>
using namespace std;
int main() {
int n, count=0;
cin >> n; // 输入四位数的个数
for (int i=0; i<n; i++) {
int num, sum_odd=0, sum_even=0;
cin >> num; // 输入一个四位数
for (int j=1; j<=4; j++) {
int digit = num % 10; // 取出最低位
if (j % 2 == 1) { // 奇数位
sum_odd += digit;
} else { // 偶数位
sum_even += digit;
}
num /= 10; // 把最低位去掉
}
if (sum_odd > sum_even) { // 判断是否满足条件
count++;
}
}
cout << count << endl; // 输出满足条件的个数
return 0;
}
```
运行示例:
输入:
```
5
1234
5678
2468
1357
9876
```
输出:
```
2
```
怎么快速求一个十六进制数转换成二进制后0的个数 用c++实现 若给定的十六进制数的位数为L,要求时间复杂度为O(L)
可以将十六进制数转换成二进制数,然后统计其中0的个数。代码如下:
```c
#include <stdio.h>
int main() {
char hex[17];
scanf("%s", hex); // 输入十六进制数
int count = 0;
for (int i = 0; hex[i] != '\0'; i++) {
int digit;
if (hex[i] >= '0' && hex[i] <= '9') {
digit = hex[i] - '0'; // 数字0~9
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
digit = hex[i] - 'A' + 10; // 字母A~F
} else if (hex[i] >= 'a' && hex[i] <= 'f') {
digit = hex[i] - 'a' + 10; // 字母a~f
}
for (int j = 0; j < 4; j++) {
count += ((digit >> j) & 1) == 0; // 统计0的个数
}
}
printf("%d\n", count);
return 0;
}
```
这个代码的时间复杂度为O(L),其中L为十六进制数的位数。