如 1,2,3,...10出现11个数字,1,2,3..11出现了13个数字。
现在知道出现d个数字,求n,如果d非法,输出impossible。
算法的思想是:计算n = 9, 99, 999...这些长度为1,2,3...的各个数的出现的数字个数,反推d。
int calc_from_number_of_digits(int d)
{
if(d < 9)
return d;
int n = 0;
int last_n = 0;
int len = 1;
while(d > n)
{
last_n = n;
n += (pow(10, len) - (len > 1? pow(10, len - 1):1)) * len ;
len++;
}
if((d - last_n) % (len - 1) == 0)
return int( pow(10, len - 2) - 1 + int((d - last_n)/(len - 1)) );
else
//printf("Impossible\n");
return -1;
}
分享到:
相关推荐
数字计数问题要求对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1,2,…,9。 编程任务:给定表示书的总页码的10 进制整数n (1≤n≤10^9) 。编程计算书的全部页码中分别用到多少次数字0,1,2,…...
标题中的“输入一个自然数n,求 ,同时统计结果中有多少个0。”是一个关于计算阶乘(Factorial)的问题,并且需要我们同时计算阶乘结果中0的数量。在这个问题中,"n!"代表n的阶乘,即1×2×3×...×n。 阶乘是数学...
1.3.7. n 个数字(0,1,…,n-1)形成一个圆圈 .................................................. 53 1.3.8. 定义 Fibonacci 数列 ...............................................................................
在Java编程中,统计一个长整型数字中0到9每个数字出现的次数是一项常见的任务,这在数据处理、分析或者算法实现中都有可能用到。这个任务可以通过使用位操作、数组或者HashMap等数据结构来解决。下面我们将详细介绍...
数字统计问题要求对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1,2,3,…,9。 编程任务: 给定表示书的总页码的十进制整数n(1<<n)。编程计算书的全部页码中分别用到多少次数字0,1,2,3,…,9。 数据...
在统计过程中,我们使用了递推式 f(n) = n*10^(n-1) 计算每个数字的出现次数。最后,我们输出每个数字的出现次数和程序的运行时间。 在实验中,我们输入了两个数字:1 和 999,结果表明该算法可以正确地统计每个...
在本题目中,我们需要使用C语言编写一个程序,该程序能接收用户输入的N个正整数,并统计其中奇数和偶数的数量。这是一道基础的编程练习,旨在帮助学习者掌握C语言的基本语法、循环结构以及条件判断。下面我们将详细...
其核心思想是遍历从1到n的每一个数字,然后逐位分解每个数字,并统计每种数字出现的次数。具体步骤如下: 1. 初始化一个大小为10的数组`count`,用于存储0至9每个数字出现的次数,初始值均为0。 2. 从1开始遍历到n...
这个问题是关于统计编码页码时每个数字出现的次数。题目要求我们编写一个程序,输入一个整数n(1 ≤ n ≤ 10^9),表示一本书的总页数,然后计算从1到n的所有页码中,每个数字0到9出现的频率。输出结果将被写入到...
- **空间复杂度**:空间复杂度为O(1),因为无论输入字符串多长,都需要且只需要一个固定长度为10的一维数组来存储数字出现的次数。 - **扩展性**:该算法易于理解和实现,适用于快速解决问题。但是,如果需要处理更...
在本题目中,我们需要编写一个C语言程序,用于计算从1到给定正整数N之间所有整数中数字"1"出现的总次数。这是一个典型的字符串处理和数学计算问题,涉及到了数字转换、字符串遍历以及计数算法。下面我们将深入探讨这...
- **不重复排列**:在任何排列中,每个数字只能出现一次。 为了实现这一目标,我们可以使用回溯法。回溯法的基本思想是逐步构建解,并在每一步选择后检查是否违反了约束条件,如果违反则撤销该选择并尝试其他选项。...
统计数字问题是指给定书的总页码 n,计算出书的全部页码中分别用到多少次数字 0,1,2,…,9。该问题的难点在于如何高效地统计每个数字的出现次数。 代码一:最笨的方法 该方法的思想是依次对每个数字进行统计。...
3. **哈希表**:利用哈希表记录每个数字出现的次数。这种方法的时间复杂度为O(n),适用于快速查询,尤其是当不相同数字较少时更为有效。 #### 示例代码解析 示例代码采用了排序+二分查找的方法实现。 1. **输入...
函数 sum(int n, int l, int m) 实现统计数字的计数,通过迭代计算页码的个位数、十位数、百位数等,最后输出每个数字出现的次数。 程序调试中可能会遇到一些问题,例如数组越界、数字溢出等,需要一步步地修改和...
统计n个英文字母和数字字符.exe
统计数字问题要求对给定的书的全部页码中分别用多少次数字0,1,2,...,9. 算法设计:给定的给定表示书的总页码的10 进制整数n (1≤n≤109) 。编程计算书的全部页码中分别用到多少次数字0,1,2,…,9。 Input ...
- `base`、`left`、`pren`:辅助变量,用于计算每一轮循环中的数字出现次数。 - `n`:输入的正整数。 - **算法步骤**: 1. **初始化变量**:`base = 1`, `left = 0`, `pren = 0`。 2. **分解数字n**:通过不断...
计算从1到n(一个正数)中,x(一个数字)出现的次数。