- Algorithm
- Incremental Method
- Simulation
- Backtracking
- Dynamic Programming
- Largest Empty Interval
- Location Allocation Problem
- Knapsack Problem
- Algorithm Analysis
- Data
- Sort
- Set
- 排序资料结构: Search Tree 系列
- Sequence 资料结构: Array / List
- 大量 Point 资料结构: k-Dimensional Tree
- Region 资料结构: Uniform Grid
- Graph
- Tree 资料结构: Heavy-Light Decomposition
- Graph Spectrum(Under Construction!)
- Tree
- Binary Tree
- Directed Acyclic Graph
- Articulation Vertex / Bridge
- Reachability
- Bipartite Graph
- Clique(Under Construction!)
- Planar Graph
- Path
- Single Source Shortest Paths: Label Correcting Algorithm
- Shortest Walk
- Cycle
- Spanning Tree
- s-t Flow
- Feasible s-t Flow
- Cut
- Matching
- T-Join
- Hamilton Circuit
- Domination
- Coloring
- Labeling
- Vector Product
- Sweep Line
- Rectangle
- Rectangle
- Polygon
- Convex Hull
- 3D Convex Hull(Under Construction!)
- Half-plane Intersection
- Voronoi Diagram
- Triangulation
- Metric
- Number
- Sequence
- Function (ℝ)
- Matrix
- Root Finding
- Linear Equations
- Functional Equation
- Optimization
- Interpolation
- Curve
- Regression
- Estimation
- Clustering
- Transformation(Under Construction!)
- Wave (ℝ)
- Representation
- Signal
- State(Under Construction!)
- Markov Chain
- System(Under Construction!)
- Markov Model
- Function
- Gray Code
- Base
- Divisor
- Prime
- Residue
- Lattice
- Series(Under Construction!)
- Average Number
- Nim
- String
- Longest Increasing Subsequence
- Longest Common Subsequence
- Approximate String Matching
- String Matching
- String Matching
- String Matching: Inverted Index
- Count Substrings
- Palindrome
- Language
- Code
- Compression
- Correction
- Encryption
- Transmission
- Data
- Text
- 2D Graphics
- Audio
- Audition(Under Construction!)
- Image
- Vision(Under Construction!)
- Model
- Motion(Under Construction!)
- Camera(Under Construction!)
- Glass(Under Construction!)
- Computer
- Physics
- Biology
- Medicine
- Finance
- Education
- Standard Library
Base
记载数量
想要记载一个数量,最直观的方式是:一个符号、重複数次。
♥ ♦♦ ☁☁☁ ★★★★★★★★★★★★★★★★★★
第一种技术:分堆
一个个数,太花时间。为了节省时间,可以尝试分堆。最常见的分堆方式,是十个一堆。如果有很多堆,那麽十堆再合成一大堆;如果有很多大堆,那麽十大堆再合成一大大堆;以此类推。
hard way: ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ easy way: ★★★★★★★★★★ ★★★★★★★★★★ ★ ★ ★★★★★★★★★★ ★★★★★★★★★★ ★★★★★★★★★★ ★★★★★★★★★★ ★★★★★★★★★★ ★★★★★★★★★★ ★★★★★★★★★★ ★★★★★★★★★★ ★★★★★★★★★★ ★★★★★★★★★★ ★★★★★★★★★★
以此类推的过程,我们习惯採用固定数量,这个数量称做“底数 Base”。例如上例的底数就是十。
然而也有例外。例如时间:六十秒一分、六十分一时、二十四时一日,底数不是固定数量。
第二个技术:命名
一个个数,太花时间。为了节省时间,可以替每种数量取不一样的名字;换句话说,用不一样的符号代替每种数量。
长长一串数量,变成短短一个符号,人生充满欢乐!
第三个技术:位数
然而,越多符号,越难背诵。你能想像背诵一百种符号代替一百种数量吗?符号还是少点好。
解法是同时使用第一个技术和第二个技术,令符号数量等于底数。例如底数是十,可以使用 0123456789 等十个符号。当数量大于等于十,十个形成一堆,记载在左边一点的位置,变成 10。当数量累积十堆,十堆形成一大堆,记载在更左边一点的位置,变成 100。这是地球上最流行的记载方式。
除了替每一种数量取名字,有些语言还会替每一种数量级取名字,让数字之间穿插数量级符号。这是题外话。
132 英文:one hundred thirty-two (hundred 是数量级的符号) 中文:一百三十二 (百、十是数量级的符号)
选择底数
我们可以选择自己喜欢的底数。底数不能是零、不能是一。底数是二,称做“二进位”,使用 01 两个符号。底数是三,称作“三进位”,使用 012 三个符号。底数是十六,称做“十六进位”,使用 0123456789ABCDEF 十六个符号。底数超过三十六,那麽必须额外引入一些符号,才够用。
底数写于数字的右下角,用括号包住。
101₍₂₎ 二进位,数字是 101 73F₍₁₆₎ 十六进位,数字是 73F
同样的数量,使用不同的底数,往往得到不同的数字。
★★★★★★★★★★★★★★★★★★ 10010₍₂₎ ★★★★★★★★★★★★★★★★★★ 18₍₁₀₎ ★★★★★★★★★★★★★★★★★★ 12₍₁₆₎
同样的数字,使用不同的底数,往往得到不同的数量。
11₍₂₎ ★★★ 11₍₁₀₎ ★★★★★★★★★★★ 11₍₁₆₎ ★★★★★★★★★★★★★★★★★
选定底数,把数量变成数字。
选定底数,把数字变成数量。
C 语言当中的 atoi() 字串转整数函式,其实就是“选定底数 10,把数字变成数量”。
改变底数(进制转换)
10010₍₂₎ = ?₍₁₆₎
令数量维持相等,给定原数字、原底数、新底数,求新数字。
演算法和程式码交给读者思考!
UVa 343 344 355 377 389 446 448 575 594 619 636 10019 10469 10473 11005 11121
延伸阅读:以多项式作为模型
一个数字可以改写成一个多项式。
10010₍₂₎ ---> 1x⁴ + 0x³ + 0x² + 1x¹ + 0x⁰ (let x = 2) 18₍₁₀₎ ---> 1x¹ + 8x⁰ (let x = 10) 73F₍₁₆₎ ---> 7x² + 3x¹ + 15x⁰ (let x = 16)
以多项式当作模型之后,“选定底数,把数字变成数量”就变成了“x 代入底数”,其演算法正是“ Horner's Rule ”。
数字与底数,在数学家眼中,可以藉由多项式一以贯之。多项式的用途实在很广。
Fibonacci Base
Fibonacci Sequence / Fibonacci Number
1 1 2 3 5 8 13 ...,大家应该都懂,所以就不介绍了。
http://www.geeksforgeeks.org/check-number-fibonacci-number/
UVa 495 11582
Fibonacci Base(Zeckendorf's Theorem)
大家做做题目、找找资料应该就懂了,所以就不介绍了。
UVa 763 948
Roman Numerals
http://en.wikipedia.org/wiki/Roman_numerals
网路已有详细资料,此处不再赘述,仅提供练习题。
UVa 759 11616 12397 11787
Calendar
春雨惊春清穀天,夏满芒夏暑相连,
秋处露秋寒霜降,冬雪雪冬小大寒。《二十四节气歌》
曆法
http://en.wikipedia.org/wiki/Calendar
网路已有详细资料,此处不再赘述,仅提供练习题。
1752 年 9 月曾经调整过日曆。
UVa 300 602 10070 11356
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论