给定一个正整数n,则1,2,...,n这n个数字能组成多少个互不相同且无重复数字的三位数。 给出C语言代码
时间: 2024-02-03 21:15:03 浏览: 33
```c
#include <stdio.h>
int main() {
int n, cnt = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
for (int j = 0; j <= 9; j++) {
if (j == i % 10) continue;
for (int k = 0; k <= 9; k++) {
if (k == i % 10 || k == j || k == i / 10) continue;
cnt++;
}
}
}
printf("%d\n", cnt);
return 0;
}
```
思路:枚举所有可能的三位数,依次判断其是否满足所有数字互不相同。
相关问题
用JAVA代码实现 给定一个正整数n,将1、2、...、n, 其中5<n<10, 这n个数字能组成多少个互不相同且无重复的五位数的偶数
以下是用Java代码实现:
```java
public class Main {
public static void main(String[] args) {
int n = 8;
int count = 0;
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
if (j != i) {
for (int k = 1; k <= 9; k++) {
if (k != i && k != j) {
for (int m = 1; m <= 9; m++) {
if (m != i && m != j && m != k) {
int num = i * 10000 + j * 1000 + k * 100 + m * 10 + 2;
if (num % 2 == 0) {
count++;
}
}
}
}
}
}
}
}
System.out.println("能组成 " + count + " 个互不相同且无重复的五位数的偶数。");
}
}
```
其中,变量`n`表示数字范围为`1`到`n`,本题中`n`等于`8`。使用四层循环枚举所有可能的五位数,并通过判断最后一位是否为偶数来计数。需要注意的是,数字不能重复,因此在每一层循环中都要判断之前已经选过的数字不能再次选取。
给定 n 个互不相同的正整数,求这 n 个数中的最大值和次大值。
给定n个互不相同的正整数,求其中的最大值和次大值可以通过以下方法实现。
首先,我们可以定义两个变量max和second_max来记录最大值和次大值。初始时,将max和second_max都设置为最小整数。
接下来,遍历这n个数,对于每一个数num,先判断num是否大于max。如果是,则把max的值赋给second_max,然后将num的值赋给max。如果不是,再判断num是否大于second_max,如果是,就把num的值赋给second_max。
最后,遍历完所有的数后,max的值就是这n个数中的最大值,second_max的值就是次大值。
下面是一个具体的例子来说明:
假设给定的n个数为 4, 9, 7, 2, 5
初始时,max=second_max=-∞
遍历数列,第一个数4,num>max,所以把max的值赋给second_max,然后将num的值赋给max,所以现在max=4,second_max=-∞
第二个数9,num>max,所以把max的值赋给second_max,然后将num的值赋给max,所以现在max=9,second_max=4
第三个数7,num<max,num>second_max,所以将num的值赋给second_max,所以现在max=9,second_max=7
第四个数2,num<max,num<second_max,所以不进行任何操作,保持max=9,second_max=7
最后一个数5,num<max,num>second_max,所以将num的值赋给second_max,所以现在max=9,second_max=7
所以最后得到的max=9,second_max=7,即最大值是9,次大值是7。