万进制——蓝桥杯|ACM 大数阶乘——21行代码AC
浅谈进制思想:
日常生活中我们习惯用十进制去运算;
为了方便电脑识别开发出了二进制,又因为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相关推荐
- 高效万进制——蓝桥杯|HDOJ 1002 大数加法——30行代码AC
浅谈进制思想: 日常生活中我们习惯用十进制去运算: 为了方便电脑识别开发出了二进制,又因为2^3=8 , 2^4=16,因此应运而生了八进制与16进制. 世上本没有路,走的人多了,也便成了路,那么既然 ...
- 测试点3的分析:1022 D进制的A+B (20分)——15行代码AC
立志用更少的代码做更高效的表达 PAT乙级最优题解-->传送门 输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数. 输入格式: 输 ...
- 一看就会——蓝桥杯 试题 基础练习 完美的代价——贪心法,21行代码AC
贪心算法的定义: 贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解.贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略 ...
- 蓝桥 试题 基础练习 杨辉三角形——11行代码AC
注意点: 1.本质上是一道找规律的二维数组题(二维数组题多是这样,摆个阵,叫你找规律). 2.直接判断,a[i][j]等于a[i-1][j]+a[i-1][j-1]:的值 3.写数列时很容易想到用二维 ...
- 大数系列三——斐波那契数列——高效万进制,亿进制
浅谈万进制思想: 日常生活中我们习惯用十进制去运算: 为了方便电脑识别开发出了二进制,又因为2^3=8 , 2^4=16,因此应运而生了八进制与16进制. 世上本没有路,走的人多了,也便成了路,那么既 ...
- UVA495 Fibonacci Freeze【大数+万进制】
The Fibonacci numbers (0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...) are defined by the recurrence: F0 = ...
- HDU1042 n!【大数+万进制】
N! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Subm ...
- 1000的阶乘-HDU 1042-大数阶乘(万进制思想)
思路: 即用数组a,数组中的每个元素存储4位数,, 比如,计算9的阶乘,在计算到7的阶乘时,7!为5040,可以用a[0]存储5040,没有产生进位,然后8!=5040*8=40320,如果看成万进制 ...
- 浅谈万进制算法与大数定理的结合(高精度乘除法,阶乘)
我们经常用的进制就是2进制.8进制.10进制和16进制.何来"万进制"?世上本无,有人喊了也就有了.呵呵 现在来谈谈自己对进制的一点不成熟的想法.计算机能"识别" ...
最新文章
- 使用ONNX将模型转移至Caffe2和移动端
- 人造肌肉机械臂太逼真引热议,举7kg哑铃“肌肉”清晰可见,网友:《西部世界》...
- Win32_16来看看标准菜单和右键菜单的玩法
- 交互式计算机图形学总结:第六章 从顶点到片元
- 关于线程池,那些你还不知道的事
- python入门之函数结构函数的参数_python3基础之函数参数类型
- Docker: vmware企业级docker镜像私服--Harbor的搭建
- Hadoop1.9安装配置
- 【总结】Oracle sql 中的字符(串)替换与转换
- android平台的一款mud工具,论剑mud脚本
- 老毛子 安装 mysql_老毛子固件mysql启动失败的解决方法
- 【安卓大作业】Android Studio开发项目图书管理系统“书香驿站”
- 生信技能树 WES分析教程学习(1)conda安装软件,配置环境
- 计算机网络管理员高级操作技能考核试卷,计算机网络管理员(高级)操作技能试题样题(2)...
- 简历中的工作经历怎么写?
- wps公式编辑器文字和公式不对齐
- 开源项目推荐(实用)
- 使用python进行普适计算/通用计算
- Linux--文件操作
- 华为物联网(IOT)开发者平台
热门文章
- 移动端视频缓存保障与CDN调度优化
- Go基础编程:格式化输出、类型转换、类型别名
- spark项目实战:电商分析平台之项目概述
- 腾讯云TStack获“下一代云计算技术创新奖”,助力云生态信息创新发展
- nginx rtmp module 代码详解 各模块主要功能
- OpenvSwitch VxLAN实验
- centos虚拟机ping不通 报错 name or service not known
- java设计模式--单例设计模式
- leetcode 482. 密钥格式化(Java版)
- 数据结构与算法(一):排序算法之 - 快速排序(详细步骤图解,附代码)