首页 > 编程语言 >算法异或的运用

算法异或的运用

时间:2023-10-06 14:44:07浏览次数:41  
标签:盏灯 小明 int ans 算法 异或 编号 运用

题目描述
在一条无限长的路上,有一排无限长的路灯,编号为1,2,3,4,…。

每一盏灯只有两种可能的状态,开或者关。如果按一下某一盏灯的开关,那么这盏灯的状态将发生改变。如果原来是开,将变成关。如果原来是关,将变成开。

在刚开始的时候,所有的灯都是关的。小明每次可以进行如下的操作:

指定两个数,a,t(a为实数,t为正整数)。将编号为[a],[2×a],[3×a],…,[t×a]的灯的开关各按一次。其中[k]表示实数k的整数部分。

在小明进行了n次操作后,小明突然发现,这个时候只有一盏灯是开的,小明很想知道这盏灯的编号,可是这盏灯离小明太远了,小明看不清编号是多少。

幸好,小明还记得之前的n次操作。于是小明找到了你,你能帮他计算出这盏开着的灯的编号吗?

  n = int(input())
ans = 0

for i in range(1, n+1):
    a, t = map(float, input().split())
    for j in range(1, int(t)+1):
        ans ^= int(j*a)

print(ans)

任何数与0进行异或运算都得到自身,自身与自身异或运算得到0。
其他所有的数与ans都异或了两次,只有开着的那个异或了一次,所以最后ans就是那个开着的灯的编号。

标签:盏灯,小明,int,ans,算法,异或,编号,运用
From: https://www.cnblogs.com/lyhLive/p/17744567.html

相关文章

  • 算法之动态规划(DP)求解完全背包问题(状态转移式方程推导)
    完全背包是01背包的进阶版。在这里补充一下代码随想录的完全背包状态转移式的推导。有兴趣的可以先看一看原版。状态转移方程状态:dp[i][j]选择前i个物品,容量为j的背包时所选物品价值总和最大。状态转移:dp[i][j]=max(dp[i-1][j-k*v[i]]+k*w[i])(k=0,1,2,3...)(j-k*v......
  • 深入探究数据结构与算法:构建强大编程基础
    文章目录1.为什么学习数据结构与算法?1.1提高编程技能1.2解决复杂问题1.3面试准备1.4提高代码效率2.学习资源2.1经典教材2.2在线学习平台2.3学习编程社区3.数据结构与算法的实际应用3.1排序算法3.2图算法3.3字符串匹配算法4.结论......
  • 基础算法--字符串
    \(KMP\)\(KMP\)算法(Knuth-Morris-Pratt算法)是一个著名的字符串匹配算法,效率很高,但是确实有点复杂。基本概念\(1\)、s[]是模式串,即比较长的字符串。\(2\)、p[]是模板串,即比较短的字符串。(这样可能不严谨。。。)\(3\)、“非平凡前缀”:指除了最后一个字符以外,一个字符串的全......
  • C++算法之旅、08 基础篇 | 质数、约数
    质数在>1的整数中,如果只包含1和本身这两个约数,就被称为质数(素数)866试除法判定866.试除法判定质数-AcWing题库\(O(n)\)boolisprime(intx){if(x<2)returnfalse;for(inti=2;i<x;i++)if(x%i==0)returnfalse;returntrue;......
  • 算法题:牛牛的三元组问题
    牛牛的三元组问题_牛客题霸_牛客网描述动物牛牛是一个勇敢的冒险家,它正在探索一个神秘的岛屿。岛上有许多宝藏,但是宝藏被隐藏在一系列数字中。牛牛找到了一个整数数组 nums,它相信这个数组中存在一些特殊的三元组,满足以下条件:三元组的和等于0。三元组中的元素不能重复。牛牛想按照......
  • 算法学习——“原地哈希法”
    这个方法名是一名网友给起的,很形象。简单理解就是,在一个数组中,将数值为a的元素放到索引为a的位置上去,这是一种降低空间复杂度的方法,在一些有条件限制的场景中非常适用。下面给两个力扣的例子进行详解。练习题目1:LCR120.寻找文件副本设备中存有 n 个文件,文件 id 记于数组......
  • C/C++学习 -- HMAC算法
    1.HMAC算法概述HMAC,全称为HMAC-MD5、HMAC-SHA1、HMAC-SHA256等,是一种在数据传输中验证完整性和认证来源的方法。它结合了哈希函数和密钥,通过在数据上应用哈希函数,生成一个带密钥的散列值,用于验证数据的完整性。HMAC算法广泛应用于网络协议、数字签名、认证和访问控制等领域。2.HM......
  • 【ACM算法】整数分块
    思考如何计算以下算式:\[\sum_{i=1}^{n}\lfloor\frac{n}{i}\rfloor\qquad(n\le10^6)\]所有人都会觉得这个非常简单,一个for循环可以直接解决,时间复杂度\(O(n)\),但是如果将\(n\)的范围改大一点点,改成\(n\leq10^{12}\)呢?这时如果我们用朴素算法一定会T;但是我们可以手......
  • 10.5算法
    对称二叉树给你一个二叉树的根节点root,检查它是否轴对称。 示例1:输入:root=[1,2,2,3,4,4,3]输出:true示例2:输入:root=[1,2,2,null,3,null,3]输出:false 提示:树中节点数目在范围[1,1000]内-100<=Node.val<=100 /** * Definition for a binary tree......
  • 【知识点】如何找到正确的算法?
    算法思路一、多组查询·考虑如何利用已知信息避免重复查询。·考虑各种预处理,例如前缀和。二、规模减小·考虑树、链等三、以小见大·考虑特殊情况,并考虑以此为基础继续转移四、模拟优化·考虑高维复杂度算法,并考虑尽可能优化五、题面信息·数据规模\[n≥10......