日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

      歡迎訪問 生活随笔!

      生活随笔

      當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

      编程问答

      牛客提高R5 A.同余方程

      發布時間:2023/12/20 编程问答 26 豆豆
      生活随笔 收集整理的這篇文章主要介紹了 牛客提高R5 A.同余方程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

      題意

      題目鏈接

      Sol

      \(solve(x, y)\)表示\(i \in [0, x], j \in [0, y]\)滿足題目要求的方案數

      首先容斥一下,\(ans = solve(r_1, r_2) - solve(l_1 - 1, r_2) - solve(l_2 - 1, r_1) + solve(l_1 -1, l_2 - 1)\)

      然后按照套路按位拆分,這里拆的時候是直接對\(x, y\)進行拆分

      這樣就把問題轉換成了看起來似乎簡單一些的問題

      假設拆完后的數是

      110011101
      1011

      我們只要對于任意一對為1的位,求出小于該位的所有合法解即可

      比如\(i = 3, j = 1\)我們要計算的就是\([110010000, 110010111]\)\([1000, 1001]\)內的合法解

      兩種都可以寫成\([v, v + 2^k]\)的性質

      先考慮一種簡單的情況,即\(v = 0\)

      假設\(i > j\),那么\(\forall z = x \oplus y \leqslant 2^i\), 對于任意的\(x \leqslant 2^j\),都會有唯一的\(y\)與之對應

      那么我們只要數出\([0, 2^i]\)\(\% M == 0\)的數的個數,再乘上\(2^j\)即可

      存在\(a[i]\)的限制實際上是一樣的。

      但是這樣統計到的實際上是開區間的信息,只要在右端點處+1即可

      #include<iostream> #include<algorithm> #define LL long long using namespace std; const LL mod = 998244353; LL l1, r1, l2, r2, M; LL add(LL x, LL y) {return (x + y >= mod) ? (x + y - mod) : (x + y); } LL calc(LL l, LL r) {if(l == 0) return ((r / M) + 1) % mod;return (r / M - (l - 1) / M) % mod; } LL solve(LL X, LL Y) {LL ans = 0;for(LL i = 0, p1 = X; p1; i++, p1 >>= 1) {for(LL j = 0, p2 = Y; p2; j++, p2 >>= 1) {if((p1 & 1) && (p2 & 1)) {LL x = i, y = j; if(x < y) swap(x, y);LL ll = ((((p1 ^ 1) << i) ^ ((p2 ^ 1) << j)) >> x) << x;ans = add(ans, (1ll << y) % mod * calc(ll, ll + (1ll << x) - 1) % mod);//cout << ans << endl;}}} // cout << ans << endl;return ans; } int main() {cin >> l1 >> r1 >> l2 >> r2 >> M;cout << (solve(r1 + 1, r2 + 1) - solve(l1, r2 + 1) + mod - solve(r1 + 1, l2) + mod + solve(l1, l2) + mod) % mod;return 0; } /* 1 1 1 1 1 */

      轉載于:https://www.cnblogs.com/zwfymqz/p/9800078.html

      總結

      以上是生活随笔為你收集整理的牛客提高R5 A.同余方程的全部內容,希望文章能夠幫你解決所遇到的問題。

      如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。