本文主要是介绍[NOIP2013]记数问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#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_vint n = 0;int x = 0;int i = 0;int j = 0;int n1 = 0;int p = 0;int sum = 0;// iscanf("%d %d", &n, &x);// opn1 = 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);}}// oprintf("%d", sum);return 0;
}
很显然他使用了math的表头,
先初始化,定义,再使用嵌套for循环来判断,但是好复杂啊,不喜欢哈哈哈哈。
这篇关于[NOIP2013]记数问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!