bzoj4869

http://www.lydsy.com/JudgeOnline/problem.php?id=4869

終于A了。。。參考了下dalao的代碼。。。

拓展歐幾里得定理,改了幾次就不變了,但是用的時候要在快速冪里判是不是要用。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 100010;
int n, m, cnt;
ll p, c;
ll phi[N], table[N];
namespace seg // n^x = n^(x % phi[x] + phi[x])
{struct data {ll ans, mn;} tree[N << 2];inline ll getphi(ll x){ll ret = x, lim = x;for(ll i = 2; i * i <= lim; ++i) if(x % i == 0) {ret = ret * (i - 1) / i;while(x % i == 0) x /= i;}
//      printf("ret=%d\n", ret);if(x > 1) ret = ret * (x - 1) / x;return ret;}inline ll power(ll x, ll t, ll p, bool &flag){bool big = false;ll ret = 1; for(; t; t >>= 1) {if(t & 1) {ret = ret * x ;flag |= big | (ret >= p);        ret %= p;}x = x * x; if(x >= p) big = true, x %= p; }return ret; }ll calc(ll x, int t){if(x >= phi[t]) x = x % phi[t] + phi[t];for(int i = t - 1; i >= 0; --i) {bool flag = false;x = power(c, x, phi[i], flag);if(flag) x += phi[i];}return x % phi[0];}inline void build(int l, int r, int x){if(l == r) { tree[x].ans = table[l]; return; }int mid = (l + r) >> 1;build(l, mid, x << 1); build(mid + 1, r, x << 1 | 1);tree[x].ans = (tree[x << 1].ans + tree[x << 1 | 1].ans) % phi[0];} inline void update(int l, int r, int x, int a, int b){ //如果這次的冪和上次一樣就不變了 if(tree[x].mn >= cnt) return;if(l > b || r < a) return;if(l == r){++tree[x].mn;tree[x].ans = calc(table[l], tree[x].mn);return;}int mid = (l + r) >> 1;update(l, mid, x << 1, a, b); update(mid + 1, r, x << 1 | 1, a, b);tree[x].mn = min(tree[x << 1].mn, tree[x << 1 | 1].mn);tree[x].ans = (tree[x << 1].ans + tree[x << 1 | 1].ans) % phi[0]; }inline ll query(int l, int r, int x, int a, int b){if(l > b || r < a) return 0;if(l >= a && r <= b) return tree[x].ans % phi[0];int mid = (l + r) >> 1, ret = 0;ret = (ret + query(l, mid, x << 1, a, b)) % phi[0];ret = (ret + query(mid + 1, r, x << 1 | 1, a, b)) % phi[0];return ret;    } 
} using namespace seg;
int main()
{scanf("%d%d%lld%lld", &n, &m, &p, &c);phi[0] = p;ll P = p;while(P != 1) phi[++cnt] = P = getphi(P);phi[++cnt] = 1; for(int i = 1; i <= n; ++i) scanf("%lld", &table[i]);build(1, n, 1); while(m--){int opt, l, r; scanf("%d", &opt);if(opt == 0){scanf("%d%d", &l, &r); update(1, n, 1, l, r);}if(opt == 1) {scanf("%d%d", &l, &r);printf("%lld\n", query(1, n, 1, l, r));}}return 0;
}
View Code

?

轉載于:https://www.cnblogs.com/19992147orz/p/6832433.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370750.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370750.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370750.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一張圖一個表——CSS選擇器總結

CSS選擇器總結&#xff1a; (這些表是一張圖片^_^) 看底部 完整思維導圖圖片和表格的下載地址&#xff1a;https://download.csdn.net/download/denlnyyr/10597820 &#xff08;我不想選擇要積分幣下載的&#xff0c;但那里最低必須選擇1個積分……&#xff09; 參考文獻&…

JavaOne 2012覆蓋率

年度Java盛會JavaOne會議于9月30日至10月4日在舊金山舉行。 進行了許多有趣的演示&#xff0c;再次證明了健康的Java生態系統。 Java Code Geeks未能參加會議&#xff0c;但是我們的JCG合作伙伴Dustin Marx出席了會議&#xff0c;并且慷慨地提供了有關該事件的完整報道&#x…

native層 安卓_安卓逆向——拼xx協議java層分析

制丨阿星整理丨阿星老鐵們大家好&#xff0c;今天小編給大家帶來很實用的技巧叫拼xx協議java層分析&#xff0c;有啥不足的地方望大家指點指點&#xff01;首先抓包 反編譯這個時間段我們方法剖析一下找到onclick 看他的走向找到方法的地方都是在進行寫入 所以我們直接分析結果…

對口高考計算機vf試題,計算機對口升學模擬答案.doc

2013年計算機專業對口高考模擬試題二一、選擇題1&#xff0e;計算機硬件系統由( )組成A.CPU和內存 B.控制器和運算器 C.主機和外設 D.CPU、內存和外存2.下列敘述中&#xff0c;正確的說法是( )。A.鍵盤、鼠標、光筆、數字化儀和掃描儀都是輸入設備B.打印機、顯示器、數字化儀都…

Java集合框架圖

轉載于:https://www.cnblogs.com/areyouready/p/6835279.html

JavaScript學習第一天(一)

JavaScript介紹 JavaScript一種直譯式腳本語言&#xff0c;是一種動態類型、弱類型、基于原型的語言&#xff0c;內置支持類型。它的解釋器被稱為JavaScript引擎&#xff0c;為瀏覽器的一部分&#xff0c;廣泛用于客戶端的腳本語言&#xff0c;最早是在HTML&#xff08;標準通用…

折半查找的思想及源碼_常用排序與查找算法

1 選擇排序選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理是&#xff1a;第一次從待排序的數據元素中選出最小(或最大)的一個元素&#xff0c;存放在序列的起始位置&#xff0c;然后再從剩余的未排序元素中尋找到最小(大)元素&#xff0c;然后放到已排序的序…

滾動視差?CSS 不在話下

何為滾動視差 視差滾動&#xff08;Parallax Scrolling&#xff09;是指讓多層背景以不同的速度移動&#xff0c;形成立體的運動效果&#xff0c;帶來非常出色的視覺體驗。 作為網頁設計的熱點趨勢&#xff0c;越來越多的網站應用了這項技術。 通常而言&#xff0c;滾動視差在…

計算機圖形學試題a卷,計算機圖形學復習題及答案

一、選擇題1.計算機繪圖設備一般使用( )顏色模型。A. RGBB. CMYC. HSVD. HLS2.在透視投影中&#xff0c;主滅點的最多個數是( )A1B2C3D43.多邊形填充時&#xff0c;下述論述錯誤的是( )A 多邊形被兩條掃描線分割成許多梯形&#xff0c;梯形的底邊在掃描線上&#xff0c;腰在多邊…

番石榴的弦類

在“ 檢查Java中的空&#xff0c;空或僅空白字符串”一文中 &#xff0c;我演示了Java生態系統&#xff08;標準Java&#xff0c; Guava &#xff0c; Apache Commons Lang和Groovy &#xff09;中用于檢查字符串是否為空&#xff0c;空或空白的常見方法。僅類似于C&#xff03…

用python做數據分析流程圖_使用Pyecharts進行高級數據可視化

歡迎使用Markdown編輯器經管之家&#xff1a;Do the best economic and management education&#xff01;你好&#xff01; 這是你第一次使用 Markdown編輯器 所展示的歡迎頁。如果你想學習如何使用Markdown編輯器, 可以仔細閱讀這篇文章&#xff0c;了解一下Markdown的基本語…

Hadoop集群的配置(二)

轉自&#xff1a;http://www.cnblogs.com/baiboy/p/4640640.html 摘要: hadoop集群配置系列文檔&#xff0c;是筆者在實驗室真機環境實驗后整理而得。以便隨后工作所需&#xff0c;做以知識整理&#xff0c;另則與博客園朋友分享實驗成果&#xff0c;因為筆者在學習初期&#x…

允許使用抽象類類型 isearchboxinfo 的對象_Java學習5-設計模式+抽象類/方法

1.設計模式設計模式&#xff1a;一套被反復使用、多數人知曉的&#xff0c;經過分類編目的、代碼設計經驗的總結&#xff0c;是軟件開發人員在軟件開發過程中面臨的一般問題的解決方案。項目中合理的運用設計模式可以完美的解決很多問題&#xff1b; 每種模式在現實中都有相應的…

初始Windows程序

1.屬性 窗體標題 Name 窗體的圖標 Icon 背景圖片 BackgroundImage 背景顏色 BackColor 最大化按鈕 MaxIMonBox 最小化按鈕 Minimun 窗體邊框樣式 FormBorderStyle 窗體初始位置 StartPosition 窗體狀態 WindowsState 背景圖片拉伸 BackgroundImageLayout 窗體標題 Te…

計算機病毒是以獨立的文件形式存在的對嗎,計算機病毒以什么形式存在?

自從2113世紀出現第一種病毒以來&#xff0c;對于世界上共有5261種病毒的疾病數量有不同的看法. 無論有1,653種&#xff0c;病毒的數量仍在增加. 根據國外統計&#xff0c;計算機病毒以每周10種的速度增長. 根據我國部的統計&#xff0c;中國計算機病毒以每月4種的速度增長. 有…

HTML基礎實例

本節列舉了一些簡單的HTML例子&#xff0c;幫助大家更感性地認識HTML標簽。是不是對一些標簽還不熟悉&#xff1f;別擔心&#xff0c;后面幾個章節會有詳細說明&#xff0c;先跑幾個例子看看效果吧。 HTML文檔相關標簽所有HTML文檔必須以<!DOCTYPE html>聲明開頭。 HTM…

簽署Java代碼

在上一篇文章中&#xff0c;我們討論了如何保護移動代碼 。 提到的措施之一是簽名代碼。 這篇文章探討了Java程序如何工作。 數字簽名 數字簽名的基礎是密碼學 &#xff0c;特別是公鑰密碼學 。 我們使用一組加密密鑰&#xff1a;私有密鑰和公共密鑰。 私鑰用于簽名文件&am…

蜘蛛搜索引擎_SEO:搜索引擎蜘蛛要引導,不能佛系優化

又是一個不眠的夜晚&#xff0c;工作對生活節奏不斷地敲打&#xff0c;我們新一代的年輕小伙不得不進步&#xff0c;滿懷熱情來挑戰我們對于工作的激情&#xff0c;雖然每一天工作都是重復地進行&#xff0c;但是每一天都有我們留下的痕跡&#xff0c;為世界的美好增添一道絢麗…

SQL數據庫排序規則修改

修改SQL數據庫排序規則: 1.修改為單用戶模式 2.然后關閉所有的查詢窗口&#xff0c;修改Options的Collocation屬性&#xff0c;如&#xff1a;Chinese_PRC_90_CI_AS 3.再修改為多用戶模式 例如&#xff1a; ALTER DATABASE SRMain SET SINGLE_USER WITH ROLLBACK IMMEDIATE Go…

屬于計算機病毒主要特征的是,[單選] 不屬于計算機病毒的主要特征的是()

[單選] 不屬于計算機病毒的主要特征的是()更多相關問題已知兩直線l1&#xff1a;mx&#xff0b;y&#xff0d;20和l2&#xff1a;(m&#xff0b;2)x&#xff0b;y&#xff0b;40與兩坐標軸圍成的四邊形有外接圓&#xff0c;則實數m的值為()A&#xff0e;1B&#xff0e;&#xf…