浅谈进制思想:

日常生活中我们习惯用十进制去运算;
为了方便电脑识别开发出了二进制,又因为2^3=8 , 2^4=16,因此应运而生了八进制与16进制。
世上本没有路,走的人多了,也便成了路,那么既然二进制可以衍生出8,16进制,为什么十进制不可以呢。
因此聪明的人们开发出了万进制,也就是10^4=10000 模仿二进制与十六进制的运算。渐渐的,我们发现万进制在进行大数运算方面有着无可比拟的优势。
如:662343889 * 5 = 3311719445
那么如果用万进制计算:可以设一个数组a[3]; a[2] = 3889 ; a[1] = 6234 ; a[0] = 6 ;
第一步:a[2] * 5 = 19445 ; 19445 %10000 = 1余9445 9445留下,1进位;
第二步:a[1] * 5 = 31170 ; 31170 %10000 = 3余1170 1170留下,加上进位的1为1171(终值),3进位;
第三步:a[0] * 5 = 30 ; 30+3(进位)为终值。
按顺序输出得:3311719945 ;仅仅三步我们便得出了最后结果,如果用十进制呢?每位相加,对于本例,至少要十步吧。效率快了3倍不止。

注意点:

本题 严格 模拟手算,相当于简化版的乘法。
1、本题用万能头文件代替#include<iostream>#include<iomanip>
传送门→万能头文件
2、万进制逢万进一,效率极高,日后做ACM也是非常优秀的代码。

代码:

#include<bits/stdc++.h>
using namespace std;
void factorial(int n) {int a[3000]; a[0] = 1;int places = 0, carry, i, j;             //place是当前总位数 , carry是进位 for(int i = 1; i <= n; i++) {carry = 0;                    for(j = 0; j <= places; j++) {           //核心代码 a[j] = a[j]*i + carry;     carry = a[j]/10000; a[j]%=10000; }if(carry > 0) { places++; a[places] = carry; } //进位操作 }cout << a[places];for(i = (places-1); i >= 0; i--)              //输出cout << setw(4) << setfill('0') << a[i];    //填充0
}
int main() {int n; cin >> n; factorial(n);return 0;
}

万进制——蓝桥杯|ACM 大数阶乘——21行代码AC相关推荐

  1. 高效万进制——蓝桥杯|HDOJ 1002 大数加法——30行代码AC

    浅谈进制思想: 日常生活中我们习惯用十进制去运算: 为了方便电脑识别开发出了二进制,又因为2^3=8 , 2^4=16,因此应运而生了八进制与16进制. 世上本没有路,走的人多了,也便成了路,那么既然 ...

  2. 测试点3的分析:1022 D进制的A+B (20分)——15行代码AC

    立志用更少的代码做更高效的表达 PAT乙级最优题解-->传送门 输入两个非负 10 进制整数 A 和 B (≤2​30−1),输出 A+B 的 D (1<D≤10)进制数. 输入格式: 输 ...

  3. 一看就会——蓝桥杯 试题 基础练习 完美的代价——贪心法,21行代码AC

    贪心算法的定义: 贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解.贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略 ...

  4. 蓝桥 试题 基础练习 杨辉三角形——11行代码AC

    注意点: 1.本质上是一道找规律的二维数组题(二维数组题多是这样,摆个阵,叫你找规律). 2.直接判断,a[i][j]等于a[i-1][j]+a[i-1][j-1]:的值 3.写数列时很容易想到用二维 ...

  5. 大数系列三——斐波那契数列——高效万进制,亿进制

    浅谈万进制思想: 日常生活中我们习惯用十进制去运算: 为了方便电脑识别开发出了二进制,又因为2^3=8 , 2^4=16,因此应运而生了八进制与16进制. 世上本没有路,走的人多了,也便成了路,那么既 ...

  6. UVA495 Fibonacci Freeze【大数+万进制】

    The Fibonacci numbers (0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...) are defined by the recurrence: F0 = ...

  7. HDU1042 n!【大数+万进制】

    N! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Subm ...

  8. 1000的阶乘-HDU 1042-大数阶乘(万进制思想)

    思路: 即用数组a,数组中的每个元素存储4位数,, 比如,计算9的阶乘,在计算到7的阶乘时,7!为5040,可以用a[0]存储5040,没有产生进位,然后8!=5040*8=40320,如果看成万进制 ...

  9. 浅谈万进制算法与大数定理的结合(高精度乘除法,阶乘)

    我们经常用的进制就是2进制.8进制.10进制和16进制.何来"万进制"?世上本无,有人喊了也就有了.呵呵 现在来谈谈自己对进制的一点不成熟的想法.计算机能"识别" ...

最新文章

  1. 使用ONNX将模型转移至Caffe2和移动端
  2. 人造肌肉机械臂太逼真引热议,举7kg哑铃“肌肉”清晰可见,网友:《西部世界》...
  3. Win32_16来看看标准菜单和右键菜单的玩法
  4. 交互式计算机图形学总结:第六章 从顶点到片元
  5. 关于线程池,那些你还不知道的事
  6. python入门之函数结构函数的参数_python3基础之函数参数类型
  7. Docker: vmware企业级docker镜像私服--Harbor的搭建
  8. Hadoop1.9安装配置
  9. 【总结】Oracle sql 中的字符(串)替换与转换
  10. android平台的一款mud工具,论剑mud脚本
  11. 老毛子 安装 mysql_老毛子固件mysql启动失败的解决方法
  12. 【安卓大作业】Android Studio开发项目图书管理系统“书香驿站”
  13. 生信技能树 WES分析教程学习(1)conda安装软件,配置环境
  14. 计算机网络管理员高级操作技能考核试卷,计算机网络管理员(高级)操作技能试题样题(2)...
  15. 简历中的工作经历怎么写?
  16. wps公式编辑器文字和公式不对齐
  17. 开源项目推荐(实用)
  18. 使用python进行普适计算/通用计算
  19. Linux--文件操作
  20. 华为物联网(IOT)开发者平台

热门文章

  1. 移动端视频缓存保障与CDN调度优化
  2. Go基础编程:格式化输出、类型转换、类型别名
  3. spark项目实战:电商分析平台之项目概述
  4. 腾讯云TStack获“下一代云计算技术创新奖”,助力云生态信息创新发展
  5. nginx rtmp module 代码详解 各模块主要功能
  6. OpenvSwitch VxLAN实验
  7. centos虚拟机ping不通 报错 name or service not known
  8. java设计模式--单例设计模式
  9. leetcode 482. 密钥格式化(Java版)
  10. 数据结构与算法(一):排序算法之 - 快速排序(详细步骤图解,附代码)