带锁的门

  • 题目
  • 一、思路
  • 二、代码
    • 测试数据

题目

在走廊上有n个带锁的门,从1到n依次编号。最初所有的门都是关着的。我们从门前经过n次,每次都从1号门开始。在第i次经过时(i = 1,2,…, n)我们改变i的整数倍号锁的状态;如果门是关的,就打开它;如果门是打开的,就关上它。在最后一次经过后,哪些门是打开的,哪些门是关上的?有多少打开的门?


一、思路

将门牌号分解为i*j的形式,判断第几次循环会改变状态、如果存在偶数个因子则与初始状态相同、奇数个因子则状态相反。
如k = 20,分解成1x20,2x10,4x5,那么第1次,2次,4次,5次,10次,20次会经过第20号门。由此可见只需要判断分解出来的因子数为奇数还是偶数即可。

二、代码

public class text1 {/** 题目信息获取: 输入n、循环n次、编号为当前循环次数的整数倍时变换状态、** 思路:将门牌号分解为i*j的形式,判断第几次循环会改变状态、如果存在偶数个因子则与初始状态相同、奇数个因子则状态相反** */public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();//获取总数int number = 0;//统计开门个数int close[] = new int[n + 1];//由于使用的是下标,所以最可能取到nfor (int i = 0; i < n; i++) {int j = i + 1;if (j * j <= n) {close[(int) Math.pow(j, 2)]++;//1为开0为关}}System.out.printf("打开门的编号:");for (int i = 1; i <=n; i++) {if (close[i]==1){System.out.print(i + " ");number++;}}System.out.printf("\n关门的编号");for (int i = 1; i <= n; i++) {if (close[i] != 1) {System.out.print(i + " ");}}System.out.println("\n开门数:" + number);}
}

测试数据

12
打开门的编号:1 4 9
关门的编号2 3 5 6 7 8 10 11 12
开门数:3
50
打开门的编号:1 4 9 16 25 36 49
关门的编号2 3 5 6 7 8 10 11 12 13 14 15 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 50
开门数:7

【带锁的门】(在走廊上有n个带锁的门,从1到n依次编号。最初所有的门都是关着的。我们从门前经过n次,每次都从1号门开始。在第i次经过时(i = 1,2,…, n)我们改变i的整数倍号锁的状态)相关推荐

  1. 登录共享计算机的用户名和密码,如何设置访问共享时每次都需要输入帐号和密码?...

    访问共享时,如何设置每次都需要输入帐号和密码呢,这里小编以WIN7系统做演示,XP系统类似操作. 1.首先在开始菜单中找到"附件"下的"运行",点击打开,如图所 ...

  2. 带你搞懂,为什么淘宝京东等使用不需要每次都登录?

    背景 现如今,人人有手机,手机皆为苹果安卓等智能手机: 现如今,人人爱网购,网购皆为淘宝京东等电商平台. 喜欢网购的你是否发现,下载好淘宝京东,只要你时不时的用一下它,就不用登录了. 这是为什么呢? ...

  3. 微信开发 - 第三方网站接入微信登录、微信支付时,本地 redirect_uri 参数错误导致无法调试的解决方案(微信开放平台)完美解决每次都需要部署到线上测试,在本地使用本地 ip 就能轻松调试

    问题描述 网上的教程都非常乱且无效,本文将站在新手的角度,超级详细的讲解. 本文提供 在微信开放平台,接入微信登录和微信支付时,本文无法调试 redirect_uri 回调错误 的解决方案, 仅需几个 ...

  4. Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过C语言解决。

    描述 Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好.请大家给Lily帮忙,通过C语言解决. 知识点 字符串 运行时间限制 0M ...

  5. 跟上学期给我们带过课的那个夹克男一样

    相关的主题文章: 九班选集3.0下 2010年07月22日 呼..接下来是女生. 21.黄格.格儿.她外貌很容易形容,因为据说跟级长有什么接洽..(别打我),不知道什么时候开始,她喊我就单一个字&qu ...

  6. Redis分布式锁(图解 - 秒懂 - 史上最全)

    文章很长,而且持续更新,建议收藏起来,慢慢读! 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三 ...

  7. mysql悲观锁会有脏数据吗_一文带你理解脏读,幻读,不可重复读与mysql的锁,事务隔离机制...

    首先说一下数据库事务的四大特性 1 ACID 事务的四大特性是ACID(不是"酸"....) (1) A:原子性(Atomicity) 原子性指的是事务要么完全执行,要么完全不执行 ...

  8. 用这种方式,我每次都是朋友圈里第一个预见AI科技趋势的人

    位来 发自 凹非寺  量子位 报道 | 公众号 QbitAI AI is the new electricity.近年来,人工智能正在深刻影响着各行各业,也给我们的工作和生活带来精彩的变化.在这场突如 ...

  9. MySQL锁机制,行锁jingran加在索引上

    锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制,应该都不陌生.?但在这之前我们先来看看并发控制,理清MVCC多版本并发控制和锁的关系,这也是之前我很迷惑的一个点 并发控制技术 在数据库中, ...

最新文章

  1. 如何清除aspx网页中的flash缓存
  2. java 同步方式 lock_java的两种同步方式, Synchronized与ReentrantLock的区别
  3. 沙雕同事一来公司就把高并发的程序搞崩了,我心态也蹦了!
  4. java正则过滤特殊字符
  5. 聊聊我对开发项目选技术的看法
  6. WebRTC的现状和未来:专访W3C WebRTC Chair Bernard Aboba(下)
  7. js 中动态添加成员对象与数组或map转换(成员字段含有.)
  8. Spring @Autowired 注释
  9. oracle存储过程行转列,oracle 存储过程-动态行转列,解决。
  10. java 池化_溯本求源: JAVA线程池工作原理
  11. monkey 真机测试步骤
  12. 百度手机输入法中的五笔9键盘有问题?
  13. CF633H Fibonacci-ish II(莫队+线段树)
  14. 每一个小孩都是种子,请允许Ta在成长的路上跌跌撞撞。耐心的等待,种子一定能长成参天大树!
  15. QtCharts 折线、饼图代码
  16. Dissect RB-Tree
  17. 餐厅点菜c语言程序代码,C语言编程——餐馆点菜
  18. 微信的新功能,快来试一下
  19. 后羿采集器怎么导出数据_数据采集教程_新手入门_常见问题清单_后羿采集器
  20. 不懂带人就自己累到死:带团队1核心、4重点、6角色、10注意

热门文章

  1. 利用深度学习网络检测草莓灰霉病及其严重程度
  2. Python/PHP:免费IP归属地查询接口和通过ip获取大致位置信息
  3. Linux 内核编译步骤及配置详解
  4. 数据库篇(八)——优化查询
  5. Java基于j2ee+mysql的花鸟鱼虫花卉市场管理系统
  6. 【安全工具】Nessus多功能扫描器
  7. 新版edge浏览器的几个操作
  8. git shanchu stash_git-stash用法小结
  9. 【小技巧】Navicat怎样查看数据库密码
  10. 带你玩转Visual Studio——单元测试