java试计算在区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤ 9) 共出现了多少次? 例如,在 1 到 11 中,即在 1,2,3,4,5,6,7,8,9,10,11 中,数字 1 出现了 4 次 输入描述:2个整数 n,x ,之间用一个空格隔开。 输出描述:1个整数,表示 x 出现的次数。 输入样例:11 1 输出样例:4
时间: 2024-01-16 08:05:13 浏览: 36
以下是 Java 代码实现:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int x = sc.nextInt();
int count = 0;
for (int i = 1; i <= n; i++) {
int temp = i;
while (temp > 0) {
if (temp % 10 == x) {
count++;
}
temp /= 10;
}
}
System.out.println(count);
}
}
```
代码思路:
1. 读取输入的 n 和 x。
2. 用循环遍历每个整数 i,从 1 到 n。
3. 对于每个 i,将其各个数字取出并判断是否等于 x,如果等于则计数器 count 加 1。
4. 输出 count 的值。
例如输入样例:
```
11 1
```
程序将输出 4,因为数字 1 在区间 1 到 11 中出现了 4 次。
相关问题
matlab试计算在区间1到n 的所有整数中,数字x(0≤x 9)共出现了多少次?
可以使用 MATLAB 中的循环语句和字符串处理函数来计算数字 x 在区间 [1, n] 中出现的次数。以下是一个示例代码:
```
n = 100; % 区间上界
x = '5'; % 统计的数字
count = 0; % 计数器
for i = 1:n
str_num = num2str(i); % 将数字转换成字符串
count = count + sum(str_num == x); % 统计数字出现次数
end
disp(['数字 ' x ' 在区间 [1, ' num2str(n) '] 中共出现了 ' num2str(count) ' 次。']);
```
在这个例子中,我们将区间的上限设为 100,需要统计数字 5 出现的次数。循环遍历区间中的每一个数字,将其转换成字符串后,使用 `sum` 函数统计字符串中包含数字 5 的个数,最终将计数器累加即可。输出结果为:
```
数字 5 在区间 [1, 100] 中共出现了 20 次。
```
试计算在区间 1 到 n 的所有整数中,数字x (0 ≤ x ≤ 9)共出现了多少次?
这道题可以用数位DP来解决。
设f[i][j]表示考虑到第i位,数字j出现的次数。
转移方程为:
f[i][j] = f[i-1][j] * 10 + 10^(i-1) * (j == x) + sum(f[i-1][k]) (k != j)
其中f[i-1][j] * 10表示在第i位上填入数字j时,前面i-1位可以任意填,所以乘以10。
10^(i-1) * (j == x)表示在第i位上填入数字x时,前面i-1位可以任意填,所以乘以10^(i-1)表示i-1位数的方案数,同时j==x时加上1。
sum(f[i-1][k]) (k != j)表示在第i位上填入数字k时,前面i-1位可以任意填,所以前面i-1位出现数字k的次数之和为sum(f[i-1][k])。
最终答案为sum(f[n][x])。
时间复杂度为O(n * 10)。