今天参加了一个IT公司的面试 有两道开放性试题没答上来 谁能帮帮忙 讲一下答案和道理

今天参加了一个IT公司的面试 有两道开放性试题没答上来 谁能帮帮忙 讲一下答案和道理,第1张

答案: 进行100遍切换之后,有锁1,4,9,16.....100,共10把锁头是打开的

如果走廊里依次排列着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个比较简单,个别地区也考一些金融知识,简答题一般是开放槐枝性的题目。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/12378954.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存