如果一个正整数可以被它的每个非零数字整除,我们就称它为公平的。例如,102 是公平的(因为它可以被 1 和 2 整除),但 282 不是,因为它不能被 8 整除。 给定一个正整数 n。找到最小整数 x,使得 n≤x 并且 x 是公平的。 写一段C++代码
时间: 2024-03-26 22:42:10 浏览: 181
以下是可以解决这个问题的 C++ 代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
bool check(int num) {
int n = num;
while (n > 0) {
int d = n % 10;
if (d == 0 || num % d != 0) {
return false;
}
n /= 10;
}
return true;
}
int main() {
int n;
cin >> n;
for (int i = n; i <= 1000000; i++) {
if (check(i)) {
cout << i << endl;
break;
}
}
return 0;
}
```
该代码使用了一个check函数来检查一个数是否公平。然后,从n开始循环,逐个检查每个数是否公平,直到找到最小的公平数为止。注意,这里默认最小的公平数不超过1000000。
相关问题
代写Python代码:P老师需要去商店买n支铅笔作为小朋友们参加编程比赛的礼物。她发现商店一共有3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起见,P老师决定只买同一种包装的铅笔。商店不允许将铅笔的包装拆开,因此P老师可能需要购买超过n支铅笔才够给小朋友们发礼物。现在P老师想知道,在商店每种包装的数量都足够的情况下,要买够至少n支铅笔最少需要花费多少钱。 输入描述: 第一行包含一个正整数n,表示需要的铅笔数量。接下来三行,每行用2个正整数描述一种包装的铅笔:其中第1个整数表示这种包装内铅笔的数量,第2个整数表示这种包装的价格。保证所有的7个数都是不超过10000的正整数。 1个整数,表示P老师最少需要花费的
钱数。
代码如下:
```
n = int(input())
pencil1 = list(map(int, input().split()))
pencil2 = list(map(int, input().split()))
pencil3 = list(map(int, input().split()))
min_cost = float('inf')
for i in range(n//pencil1[0] + 1):
for j in range((n - i*pencil1[0])//pencil2[0] + 1):
k = (n - i*pencil1[0] - j*pencil2[0])//pencil3[0]
if i*pencil1[0] + j*pencil2[0] + k*pencil3[0] >= n:
cost = i*pencil1[1] + j*pencil2[1] + k*pencil3[1]
min_cost = min(min_cost, cost)
print(min_cost)
```
解释:
首先读入需要的铅笔数量n和三种包装的铅笔信息。
然后我们可以用两个循环枚举购买第一种和第二种包装的铅笔的数量,再根据总数量计算出第三种包装的铅笔数量。
如果购买的铅笔数量大于等于n,就计算当前花费,并更新最小花费。
最后输出最小花费即可。
注意:这里用了一个技巧,即在循环中用整除运算符//来计算购买的铅笔数量,这样可以保证购买的铅笔数量是整数。
阅读全文