一组数字的循环输出
来源:互联网 发布:fastjson解析复杂json 编辑:程序博客网 时间:2024/04/28 03:50
一组数字的循环输出
如1,0,1,0,1,1,0,1,0,1……或着是0,0,1,0,1,0,0,1,0,1……
都是五个一循环,五个一循环。他们之间好像存在某种联系,但又不是那么明显,即使使用奇偶性调控也无法实现。
对与1,0,1,0,1,1,0,1,0,1……这组数字的公式表达是:
f=[3*(n+4)/5]-[3*(n+3)/5]
n f
1 1
2 0
3 1
4 0
5 1
6 1
7 0
8 1
9 0
10 1
11 1
对于0,0,1,0,1,0,0,1,0,1……这组数组的公式表达是:
f=[2*(n+5)/5]-[2*(n+4)/5]
n f
1 0
2 0
3 1
4 0
5 1
6 0
7 0
8 1
9 0
10 1
11 0
有什么发现吗?表达式的通式为f=[p*(n+a)/q]-[p*(n+b)/q],这里的[]是取整的意思,在数学中称之为高斯函数
由于数组的循环是以五个出现的,而q就是5。但这是为什么呢?是不是当数组以6个循环,q就等于6呢?
答案是正确,以几个数字循环,q就等于几!那p又有什么用呢?p与q的组合可以说是关键。
n+a,n+b为未知数,
设x=5*k+h(x,k,h皆为整数)----------5就是q
很显然,x%5=h=0,1,2,3,4.
这五个值分别乘以同一个纯小数y,将产生不同的值g,而由于y的大小问题,将使得结果在某些值上进位
0
1
y*h 2 = g
3
4
例如:y=0.6,h为5的余数0,1,2,3,4
G=0.6*x [G] [Gn+1]-[Gn]=t
g1=0.6*0=0 [g1]=0
g2=0.6*1=0.6 [g2]=0 [g2]-[g1]=0
g3 =0.6*2=1.2(进位) [g3]=1 [g3]-[g2]=1
g4 =0.6*3=1.8 [g4]=1 [g4]-[g3]=0
g5 =0.6*4=2.4(进位) [g5]=2 [g5]-[g4]=1
g6 =0.6*5=3.0(进位) [g6]=3 [g6]-[g5]=1
g7 =0.6*6=3.6 [g7]=3 [g7]-[g6]=0
g8 =0.6*7=4.2 (进位) [g8]=4 [g8]-[g7]=1
g9 =0.6*8=4.8 [g9]=4 [g9]-[g8]=0
g10 =0.6*9=5.4(进位) [g10]=5 [g10]-[g9]=1
g11 =0.6*10=6.0 (进位)[g11]=6 [g11]-[g10]=1
规律出来了对吧!其实 G=0.6*x=0.6*( 5*k+h )=3k+0.6*h 其规律就来源于0.6*h的进位效果
现在我们来解析一下公式:f=[p*(n+a)/q]-[p*(n+b)/q]
n+a,n+b就是x(a,b的作用是起调控作用,以控数组首项处在你想要的循环位置上),p/q=0.6,所以a,b起调控作用需要具体加减,关键是要找到这个小数,以实现进位的效果,q很容易找到,就是有几个数字循环,q就等于几。
那p呢?我们在看看序列
对与1,0,1,0,1,1,0,1,0,1……这组数字的公式表达是:
f=[3*(n+4)/5]-[3*(n+3)/5]
对于0,0,1,0,1,0,0,1,0,1……这组数组的公式表达是:
f=[2*(n+5)/5]-[2*(n+4)/5]
在数组中,数组元素的和好像就是q,哈哈!或许你还不清楚q为何会等于数组元素和的原因,由于你要进位,你进了多少为当然就产生多少1喽,于是q便等于和喽
例如:1,0,1,0,1这个循环,你必然要进位3次,经历1-0,2-1,3-2这三个阶段对吧?
q与0.6*h是对应的,h便是p的几个余数,即0.6p=q。
或许看了这么久,你觉得该数组的循环输出作用不大?
0,0,1,1,2,3,3,4,4,5……你能表达吗?其实不就在上面吗?用一个取整函数做到了,
甚至一些不是以0,1这样进位的也可以做到,只需在[p*(n+a)/q]前面加个z[p*(n+a)/q]便可以了,具体的应用就要靠你去挖掘了,在计算某一天是星期几的蔡勒公式就用到了该方法(http://download.csdn.net/detail/zhouyumengdie/9553975)文档已经上传有兴趣的同学可以看看,附件里面也有
表达式的通式为f=z([p*(n+a)/q]-[p*(n+b)/q])
拓展 =[r*(n+c)/s]([p*(n+a)/q]-[p*(n+b)/q])
- 一组数字的循环输出
- 一组数字的全排列按序输出
- iterator 的遍历 循环输出数字,页码
- 输入一组数字,统计每个数字的个数后按序输出
- 输出一组数字按由大到小排列
- 随机输出一组数字 (洗牌算法)
- 请教输入任意一组数字,然后将这组数字输出
- 输出由1~9组成和三组三位数,第二组是第一组的2倍,第三组是第一组的3倍,三组数字中无重复数字
- 循环输出一个数字表格
- ob_flush,flush 循环输出数字
- 得到一组数字的随机顺序
- [转] 一组神奇的数字:142857
- 删除一组数中重复的数字
- java 一组数字的查重算法
- 递归输出一组元素的排列组合方式
- 输出一组整数的全排列
- php查出连续一组数字中缺少的那个数字
- 输入一组数字要求倒序输出,例如输入为123输出是321
- 解决VC助手出现的颜色问题
- String,StringBuilder,StringBuffer
- 浅谈C语言中的强符号、弱符号、强引用和弱引用
- HTTP 数据包头解析
- 用友电话面试后的几个问题总结
- 一组数字的循环输出
- java线程执行器
- ExpandableListView的基本用法
- Python append , pop, del 和 remove 基础知识篇
- Shell 脚本中如何使用make命令
- 一个程序员的进化史-第六章
- 13-1盒模型代码简写关于颜色的css样式也是可以缩写的,当你设置的颜色是16进制的色彩值时,如果每两位的值相同,可以缩写一半。 例子1: p{color:#000000;} 可以缩写为: p{
- Shell 脚本知识回顾 (六) —— Shell 函数
- 开源一个网络库ARHttpRequest,iOS适配NSURLSession/ASIHTTPRequest等,Android适配HttpURLConnection等