计算2^4000内数字0到9的分布

如题,用大数乘法很简单,但在别处看到一个用100000进制来计算的代码。如下:

 1 #include <vector>
 2 #include <stdio.h>
 3 int main()
 4 {
 5     std::vector<int> bigNumber(400);
 6     bigNumber[0] = 1;
 7     for (int i = 0; i < 4000; i++) {
 8         for (int j = 0; j < 400; j++) {
 9             bigNumber[j] *= 2;
10         }
11         for (int j = 0; j < 399; j++) {
12             bigNumber[j + 1] += bigNumber[j] / 100000; // 100000进制
13             bigNumber[j] %= 100000;
14         }
15     }
16     bool willOutput = false;
17     int totalNum = 0;
18     for (int j = 399; j >= 0; j--) {
19         if (bigNumber[j] != 0 || willOutput) {
20             totalNum += 5;
21             printf(willOutput ? "%05d" : "%d", bigNumber[j]);
22             willOutput = true;
23         }
24     }
25     printf("\n%d\n", totalNum);
26     return 0;
27 }
时间: 2024-10-10 06:54:43

计算2^4000内数字0到9的分布的相关文章

计算数值区间内某个数字出现的次数

计算数值区间内某个数字 9 出现的次数 1 程序的实现 2 功能测试 3 程序的优化 4 添加调试代码 ·············· 1 程序的实现 vim 9.c gcc 9.c ./a.out 图片太大,把显示的列数修改为10. 2 功能测试 测试一个数字内部的 9 能不能准确测定. 修改: min = 9938; max = 9939; ...... ./a.out Display num:9 in 9938 and 9939. There are. |   9938   9939 Fro

10.1 优化函数 在前面的章节中,我们已经知道,递归是 F# 中处理函数的主要控制流机制。我们第一次是使用它写一些进行计算的简单函数,例如,计算指定范围内的数字的和或阶乘。后来,我们发现它在处理递

10.1 优化函数 在前面的章节中,我们已经知道,递归是 F# 中处理函数的主要控制流机制.我们第一次是使用它写一些进行计算的简单函数,例如,计算指定范围内的数字的和或阶乘.后来,我们发现它在处理递归数据结构,最重要的列表是时,是无价的. 我们知道,递归也有一些局限性,堆栈溢出的可能性是最明显的一个:我们将会看到,某些递归计算非常低效.在命令式语言中,通常使用非递归函数,以避免出现问题:函数语言已经有方法解决这些问题,并可以高效地使用递归.首先要集中关注于正确性:如果一个额外的字节吹动堆栈,真正

前端极易被误导的css选择器权重计算及css内联样式的妙用技巧

记得大学时候,专业课的网页设计书籍里面讲过css选择器权重的计算:id是100,class是10,html标签是5等等,然后全部加起来的和进行比较... 我只想说:真是误人子弟,害人不浅! 最近,在前端群里还发现以上观点类似的奇葩聊天,真是*** 其实,也是在很久以前,看了腾讯ISUX的一位前端工程师-麦时分享的一篇技术文章(个人站点已失效,就不贴出来了),才了解到真正的css选择器权重计算. 以下是css选择器权重计算精华所在,翻译自国外的文档(记得是W3C给出的计算规则) 如果一个声明来自s

统计页码数字0~9分别出现了多少次

最简单的方法是依次遍历每个数字,但这种算法时间复杂度太高,若再用上递归,数字一大内存就爆了,时空复杂度都很高,令人无法忍受. 因此探索出一种目前为止比较满意的方法. 思路来自<编程之美>计算数字1的个数(友情提示:若没有看过请先预习,方便理解以下代码),拓展一下即可(特别要注意的是计算数字0,它不可能出现在最高位).时间复杂度为O(logn+1),空间复杂度O(1). 这里用的语言是C++,已经过数据集测试. //程序格式(输入:long long范围内的正整数:输出:0~9每位数字出现的次数

Excel计算百分比时分母为0的处理

作者:iamlaosong 实际工作中经常碰到百分比计算,但是,如果分母为0,则单元格显示#DIV/0!,可以用if函数进行判断(直接判断分母,或者用iserror(A1/B1)或isnumber(A1/B1)函数判断计算结果),这样就不会显示#DIV/0!,显示什么,可以根据需要设定,例如: =IF(B1<>0,A1/B1,0)     ' 分母为0时显示0 =IF(B1<>0,A1/B1,1)     ' 分母为0时显示1 =IF(B1<>0,A1/B1,"

己知矩形两对角点坐标,计算矩形区域内所有坐标

时不时要用到求坐标,原来写过又忘了,重写一次备忘 private string getAllPoint(Point p1, Point p2)        {            string info = "";            int minNumX = 0;            int minNumY = 0;            for (int i = 0; i < Math.Abs(p2.X - p1.X) + 1; i++)            { 

Java 输入一个整数,计算它各位上数字的和。(注意:是任意位的整数)

import java.util.*; /* * 输入一个整数,计算它各位上数字的和. * (注意:是任意位的整数) */ public class Sum02 { public static void main(String[] args) { System.out.print("请输入任意一个整数:"); Scanner s = new Scanner(System.in); int sum = 0; int t = s.nextInt(); while(t!=0){ sum =

python从零开始第3篇--从数字0开始说起

一句"Hello World"是无数编程语言的开始,和python打过招呼之后应该干点正事了,计算机嘛,顾名思义做计算的,计算什么呢?先从最基础的0开始吧. 打开python解释器,输入数字0,它就会给你返回显示一个数字0,回车,再然后输入0+1,就会在下方显示1 解释器是可以直接用来做计算的,就像在计算器上输入一样,结果很直观. 接下来咱们再试下不能在计算器上做的操作,如比较大小 0 > 1 显示了一个 False,即表达式为假,不成立. 让我们再做一个比较,0 == Fals

js小数计算的问题,为什么0.1+0.2 != 0.3

//下面可以用原生解决 0.1+0.2 的问题 parseFloat((0.1 + 0.2).toFixed(10)) 复制代码 console.log(0.1+0.2===0.3); //true or false? 在正常的数学逻辑思维中,0.1+0.2=0.3这个逻辑是正确的,但是在JavaScript中0.1+0.2!==0.3,这是为什么呢?这个问题也会偶尔被用来当做面试题来考查面试者对JavaScript的数值的理解程度 在JavaScript中的二进制的浮点数0.1和0.2并不是十