给定一个整数n 范围是1到1e12,从1到n中满足只有2,6,8,9四个数且每个数最少出现一次,的数的个数是,用c++代码实现
时间: 2024-05-22 12:15:44 浏览: 45
这道题可以使用容斥原理来解决。首先,我们可以计算出只包含2的数的个数、只包含6的数的个数、只包含8的数的个数、只包含9的数的个数,分别记为cnt2、cnt6、cnt8、cnt9。然后,我们可以计算出只包含2和6的数的个数、只包含2和8的数的个数、只包含2和9的数的个数、只包含6和8的数的个数、只包含6和9的数的个数、只包含8和9的数的个数,分别记为cnt26、cnt28、cnt29、cnt68、cnt69、cnt89。接着,我们可以计算出只包含2、6和8的数的个数、只包含2、6和9的数的个数、只包含2、8和9的数的个数、只包含6、8和9的数的个数,分别记为cnt268、cnt269、cnt289、cnt689。最后,我们可以计算出只包含2、6、8和9的数的个数,记为cnt2689。最后的答案就是:
cnt2 + cnt6 + cnt8 + cnt9 - cnt26 - cnt28 - cnt29 - cnt68 - cnt69 - cnt89 + cnt268 + cnt269 + cnt289 + cnt689 - cnt2689
代码如下:
相关问题
给定一个整数n 范围是1到1e12,从1到n中满足只有2,6,8,9四个数且每个数最少出现一次的数的个数是,用c++代码实现,不需要思路
```c++
#include <iostream>
#include <cstring>
using namespace std;
bool check(long long x) {
bool num[10];
memset(num, false, sizeof(num)); // 初始化num数组
while (x) {
num[x % 10] = true; // 标记数字出现
x /= 10;
}
return num[2] && num[6] && num[8] && num[9]; // 判断是否符合条件
}
int main() {
long long n;
cin >> n;
int cnt = 0;
for (long long i = 1; i <= n; i++) {
if (check(i)) {
cnt++;
}
}
cout << cnt << endl;
return 0;
}
```
用c++实现给定一组整数,求其中的最大,最小,绝对值最大和绝对值最小的数。 第一行输入正整数n,表示输入的整数个数,2<=n<=100。 第二行是n个整数。 输出n个整数中的最大值,最小值,绝对值最大值和绝对值最小值
以下是C++代码实现:
```cpp
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n;
cin >> n;
int max_num = -1e9, min_num = 1e9, abs_max = 0, abs_min = 1e9;
for(int i=0; i<n; i++)
{
int num;
cin >> num;
max_num = max(max_num, num);
min_num = min(min_num, num);
abs_max = max(abs_max, abs(num));
abs_min = min(abs_min, abs(num));
}
cout << max_num << " " << min_num << " " << abs_max << " " << abs_min << endl;
return 0;
}
```
首先读入整数的个数n,然后遍历n个整数,分别更新最大值、最小值、绝对值最大值和绝对值最小值。最后输出这四个值即可。