<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      題目概述

      原題參考:B. Make Almost Equal With Mod
      給出一個長度為n的數組,可以證明的是,一定存在一個整數k使得a[i]=a[i]%k之后,數組a中只有兩個數,請給出整數k,當然,若有多個k,隨意給出一個即可

      思路想法

      太巧妙了,本來以為是暴力可以過的,因為其實數組a的很小,最多100個數,當時猜的是對于任意的數,都會存在一個很小的k滿足,就可以直接暴力跑過,但是事實上是錯誤的,還是tle了,因為ai的取值很大,最大是1e18,這里就不得不提到這個問題的解法了
      就向題目說的,本題解法與二進制相關,想一下取模運算的幾個例子,123%100=23,1245%1000=245...以這種十進制的取模運算很容易看出來一種截斷效應,當然當k!=10^i次方時是不存在該種現象的,隨便舉幾個二進制的例子,1011%10=1,1001111%100=11,因此二進制取模對2的冪次放也存在截斷效應,這時候我們在判斷一下二進制每一位數有幾種可能,每一位只有兩種可能,當當前位相同時,看下一位,如果不同,那么這一位之后的都想同,這一位不同,正是兩個數,否則如果這一位也相同,那么繼續往下

      參考代碼

      #include <bits/stdc++.h>
      using namespace std;
      #define FAST_IO ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
      #define endl '\n'
      #define pll pair<long long, long long>
      #define pii pair<int, int>
      #define vi vector<int>
      #define vl vector<long long>
      #define ll long long
      #define ull unsigned long long
      const ll INF = 9187201950435737471;
      const int inf = 2139062143;
      const ll mod = 1e9 + 7;
      const double eps = 1e-6;
      const double PI = acos(-1.0);
      const int N = 107;
      ll n, a[N];
      void solve() {
      	cin >> n; 
      	for(int i=1; i<=n; i++) cin >> a[i];
      	set<ll> st;
      	ll k = 2;
      	while(true) {
      		int i;
      		for(i=1; i<=n; i++) {
      			st.insert(a[i]%k);
      			if(st.size() > 2) break;
      		}
      		if(i == n+1 && st.size() == 2) break;
      		else k <<= 1, st.clear();
      	}
      	cout << k << endl;
      	st.clear();
      }
      int main() {
      #ifdef xrl
      	freopen("in.txt", "r", stdin), freopen("out.txt", "w", stdout);
      #endif
      	FAST_IO;
      	int t = 1;
      	cin >> t;
      	while(t --) solve();
      #ifdef xrl
      	cout << "Time used = " << (double)(clock() * 1.0 / CLOCKS_PER_SEC) << "s";
      #endif
      	return 0;
      }
      

      做題反思

      太巧妙了,實在是太好玩了,所以對于任意數組,其實可以通過取模運算變為一個或者兩個數

      posted on 2024-03-02 00:26  山余木  閱讀(26)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 久久人人97超碰国产精品| 77777亚洲午夜久久多人| 人人澡超碰碰97碰碰碰| 豆国产97在线 | 亚洲| 无码内射中文字幕岛国片| 国产性一交一乱一伦一色一情 | 人妻中文字幕一区二区视频| 成在线人免费| 亚洲高清有码中文字| 肉大捧一进一出免费视频| 乌鲁木齐县| 女同另类激情在线三区| 人人做人人澡人人人爽| 亚洲人成人日韩中文字幕| 伊人色综合久久天天小片| 中文人妻av高清一区二区| 久久热精品视频在线视频| 少妇爆乳无码专区| 怡红院一区二区三区在线| 久久狠狠高潮亚洲精品夜色| 久久久国产乱子伦精品作者| 亚洲人成网站在线播放2019| 国产在线亚州精品内射| 色九月亚洲综合网| 国产一区二区不卡精品视频| 天天综合亚洲色在线精品| 亚洲AV成人片不卡无码| 九九热在线视频只有精品| 亚洲精品久久久久国产| 91青青草视频在线观看| 中文字幕日韩一区二区不卡 | 国产va免费精品观看| 国产小受被做到哭咬床单GV| 香港经典a毛片免费观看播放| 欧美中文亚洲v在线| 在线日韩日本国产亚洲| 国产成人精品一区二区三| 成人无码影片精品久久久| 国产欧美国日产高清| 亚洲av午夜福利大精品| 宾馆人妻4P互换视频|