如果走廊里依次排列着K把锁头,那么在第K遍后,有锁1,4,9,16.....,|sqrt(k)|锁头是打开的.
证明: 100把锁头分别标记为s1,s2,s3,..,si,..,s100
s1只在第1遍被切换状态
如果i是素数,si只是在第1遍和第i遍被切换状态,切仿派换次数为偶数个
虚大伍如果i是非平方数的合数,则总可以分解为i=m*n=q*p=....=r*u(m!=n,q!=p,....,r!=u),si只是在第1遍,第i遍,第m,n,q,p,...,r,u遍被切换状态,切换次数为偶数个
如果i是平方数时,i=m*n=q*p=....=r*u=x*x(m!=n,q!=p,....,r!=u),si只是在第1遍,第i遍,第m,n,q,p,...,r,u遍,第x遍被切换状态,切换次数为奇数个
切换之前,锁头是锁着的状态,经过偶数次切换后,锁头还是锁着的状态
切换之前,锁头是锁着的状态,经过奇数次切换后,锁头变为打开着的状态.
因此,只有当i是平方数的锁头被打开.
算法: 由开锁智力题的 *** 作步骤,我们可以获得启发,按照这种方法获取平方数.
step1:将数的状态值都设定为-1
step2:将所有数依此模1,2,3,....,100,如果结果为0,就改变状态
step3:打印出状态值为1的数.
程序: 下面是利用这一方法获取[1,100]区间上平方数的程序,代码在vc++6.0平台运行成功.
/**author:mapping
date:2007.2.15
FindSquareNumber .cpp**/
#include <iostream>
#include <process.h>
using namespace std
void main()
{
差或 int a
int i
for(i=1i<= 100i++)
{
a=-1
for(int j=1j<=ij++)
{
if(i%j==0)
a=(-1)*a
}
if(a==1)
cout<<"square number :"<<i<<endl
}
system("pause")
}
泰隆银行笔试要刷的人数主要和禅仿招人数有关系,比如招1个,那么有10个人报名考试,那么进去面试,一般只有3个。泰贺明纤隆银行柜员笔试考行测和主观题,个别地区还考察金融知识。泰隆银行最常考的题型是选择题,和简答题,一般选择题30个,简答题两个。常考知识点在 考 丁 谷 都有的。
行测知识30个比较简单,个别地区也考一些金融知识,简答题一般是开放槐枝性的题目。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)