題目描述
在一條無限長的路上,有一排無限長的路燈,編號為1,2,3,4,…。
每一盞燈只有兩種可能的狀態,開或者關。如果按一下某一盞燈的開關,那麼這盞燈的狀態將發生改變。如果原來是開,將變成關。如果原來是關,將變成開。
在剛開始的時候,所有的燈都是關的。小明每次可以進行如下的操作:
指定兩個數,a,t(a為實數,t為正整數)。將編號為[a],[2×a],[3×a],…,[t×a]的燈的開關各按一次。其中[k]表示實數k的整數部分。
在小明進行了n次操作後,小明突然發現,這個時候只有一盞燈是開的,小明很想知道這盞燈的編號,可是這盞燈離小明太遠了,小明看不清編號是多少。
幸好,小明還記得之前的n次操作。於是小明找到了你,你能幫他計算出這盞開著的燈的編號嗎?
#include#include#include#includeusing namespace std;
int n,t;
double a;
int main()
} printf("%d",ans);
return 0;
}
任何數與0進行異或運算都得到自身,自身與自身異或運算得到0。
其他所有的數與ans都異或了兩次,只有開著的那個異或了一次,所以最後ans就是那個開著的燈的編號。
異或 位運算
powered by ab in 局外人 題意 求兩個陣列每個數之間的異或和。如果要o n 2 o n 2 o n2 遍歷,資料範圍很大,肯定會t tt。那麼就要想個別的辦法。我們可以統計分別 a aa,b bb 陣列每一位 0,1 0,10,1 個 數,分別計算每位的貢獻即可。如何實現?inclu...
位運算 異或
通俗的說異或,即指兩值相異時,取真值,否則為假。以下是其真值表 x y y 0 1 x 001 110那麼如何用與或非實現呢?既然是相異,當然首先想到 x y,看看它的真值表 x y01 0001 10有乙個位子有點不一樣,如果換一下 x 和 y 的位置呢?y x01 0011 00哦,這下很清楚了...
位運算 異或運算
今天刷題時遇到乙個題,本以為是暴力 大模擬,結果看完別人的ac 後人都傻了,竟然是位運算。其中用到了異或 這種運算子。先上原題連線 傳送門 題目意思很好理解,有無限多個路燈,編號為1.2.3 剛開始時都是關著的,每次對一盞燈的操作都會改變它的狀態 即開變成關,關變成開 每次操作會給你乙個實數a和乙個...