#include <stdio.h>
int main() {
int hash [10] = {0};
int n, x;
scanf("%d %d", &n, &x);
for (int i = 1; i <= n; i++) {
int tem = i;
while (tem) {
hash[tem % 10]++;
tem /= 10;
}
printf("%d", hash[x]);
}
return 0;
}
在这里我使用了哈希表来计算,
1首先定义哈希表2遍历区间3输入4输出。都是问题是程序在没有报错的情况下,竟然没有通过。认为感觉好奇怪,为什么在程序正确的情况下,为什么不通过呢?好不容易有个偷懒的机会都不给。
下面这个是别人写的代码。
#include <stdio.h>
#include <math.h>
int main() {
// add_v
int n = 0;
int x = 0;
int i = 0;
int j = 0;
int n1 = 0;
int p = 0;
int sum = 0;
// i
scanf("%d %d", &n, &x);
// op
n1 = n;
for (i = 0; n1; i++)
{
p = pow(10, i);
if (x < n1 % 10 && x)
{
sum += p;
}
else if (x == n1 % 10)
{
sum += n % p + 1;
}
n1 /= 10;
sum += n1 * p;
}
if (!x && n >= 10)
{
sum--;
for (int j = 1; j < i-1; j++)
{
sum -= pow(10, j);
}
}
// o
printf("%d", sum);
return 0;
}
很显然他使用了math的表头,
先初始化,定义,再使用嵌套for循环来判断,但是好复杂啊,不喜欢哈哈哈哈。