指针统计正整数指定数字的个数c++
时间: 2024-02-27 15:56:40 浏览: 121
可以使用以下代码来统计一个正整数中指定数字的个数:
```c++
#include <iostream>
using namespace std;
int main() {
int num, digit, count = 0;
cout << "Enter a positive integer: ";
cin >> num;
cout << "Enter the digit to count: ";
cin >> digit;
while (num > 0) {
if (num % 10 == digit) {
count++;
}
num /= 10;
}
cout << "The digit " << digit << " appears " << count << " times in the integer." << endl;
return 0;
}
```
在上述代码中,我们首先输入一个正整数和要统计的数字。然后,我们使用 while 循环来遍历该数字的每一位。如果当前位与要统计的数字相等,则增加计数器。最后,我们输出计数器的值即可。
相关问题
一个正整数,正读和反读都相同的数为回文数。例如22,131,2442,37073,6,... 所有1位数都是回文数。给出一个正整数n(1≤n≤10000),求出1,2,…n之中(包括1和n),包括1和n的回文数的个数。用C++
可以使用字符串判断一个数是否为回文数,具体实现如下:
```cpp
#include <iostream>
#include <string>
using namespace std;
bool isPalindrome(int num) {
string str = to_string(num);
int left = 0, right = str.length() - 1;
while (left <= right) {
if (str[left] != str[right]) {
return false;
}
left++;
right--;
}
return true;
}
int main() {
int n;
cin >> n;
int count = 0;
for (int i = 1; i <= n; i++) {
if (isPalindrome(i)) {
count++;
}
}
cout << count << endl;
return 0;
}
```
首先,我们定义了一个 `isPalindrome` 函数,用于判断一个数是否为回文数。该函数首先将数转换为字符串,然后使用双指针从字符串两端开始向中间扫描,判断对应字符是否相等。如果相等,则继续扫描;如果不相等,则说明该数不是回文数,返回 `false`。
在主函数中,我们从标准输入读入了一个正整数 `n`,然后使用一个循环从 `1` 到 `n` 遍历所有数,并判断每个数是否为回文数。如果是,则回文数个数加一。最后输出回文数个数即可。
给定一个长度为n的正整数序列,a1,a2,a3,......an;现在的任务是要统计子序列的个数, 子序列的条件:长度为k的子序列的和,且该和为7的倍数。 请你计算这样的子序列共有多少个? 输入: 第一行输入n和k (1<=n,k<=200)。 第二行是这n个正整数(都是大于且0小于100的数)。 输出: 输出满足条件的子序列的个数,在1行内输出。 例子输入: 5 3 2 5 4 5 6 例子输出: 1 c++
好的,以下是 C++ 代码实现:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
vector<int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
// 计算前缀和数组
vector<int> prefix_sum(n+1);
for (int i = 0; i < n; i++) {
prefix_sum[i+1] = prefix_sum[i] + a[i];
}
// 统计满足条件的子序列个数
int count = 0;
for (int i = k; i <= n; i++) {
for (int j = i; j <= n; j++) {
if ((prefix_sum[j] - prefix_sum[j-k]) % 7 == 0) {
count++;
}
}
}
cout << count << endl;
return 0;
}
```
与 Python 代码实现类似,我们先读入输入数据,计算出前缀和数组 prefix_sum。然后,我们枚举所有长度为 k 的子序列,计算它们的和,并判断是否为 7 的倍数。具体来说,我们使用两个指针 i 和 j,分别指向子序列的左右端点。通过前缀和数组可以快速计算子序列的和 prefix_sum[j] - prefix_sum[j-k],并判断是否为 7 的倍数。最后,统计满足条件的子序列个数,并输出即可。
阅读全文