problem 945: 數列的秘密inputtime limit: 1000 ms memory limit: 262144 kb
problem description
wsw最近在研究數列,他需要知道在他所研究的數列中,最大的數是多少(max),最小的數是多少(min),最大的數的最小的數次冪是多少(max^min),所有數的乘積是多少。
要知道,這樣的問題是肯定難不倒wsw的。但是,最近wsw突發奇想,想要研究下這個數列的更深層的性質,所以他決定不斷的從這個數列中刪去一些數,每次刪除後都研究下當前數列。由於數列項數很大,這給wsw帶來了很大的麻煩,於是wsw請你幫他寫乙個程式,來完成下列操作。
1. d x:表示從數列中刪除x,保證原數列中一定會有x。(注意這裡是如果數列中有多個x,那麼就要先把x全部刪掉,如果某個x在d的時候以前已經被d過了,請自動忽略這一次的d)
2. b:輸出當前數列中的最大數,保證數列不為空。
3. s:輸出當前數列中的最小數,保證數列不為空。
4. m:輸出max^min 除以317847191 的餘數,其中max 為當前數列中的最大數,min 為當前數列中的最小數,保證數列不為空。
5. t:輸出數列中所有數的乘積除以317847191 的餘數,保證數列不為空。
共m+2 行output第1 行:兩個正整數n,m,n 表示初始數列的長度,m 表示運算元。
第2 行:n 個正整數,第i 個數表示初始數列中的第i 項ai,數列中有可能會有相同的數。
第3~m+2 行:每行表示乙個操作,具體格式參見題目描述。
對於所有資料n<=1,000,000, m<=1,000,000, ai<=100,000,000
每行乙個數,分別表示每個操作的結果(d x 操作不需要有輸出)。sample input
3 6sample output2 6 9
m d 9
b s m t
816 2
36 12
#include
#include
#define n 1000005
#define ha 317847191
#define x q[i].x
typedef long long ll;
using namespace std;
struct que q[n];
ll i,n,m,k,a[n],s[n],f[n],num,ans=1,min=2147483647,max=-2147483647;
char s[10];
ll ksm(ll xx,ll yy)
int main()
}for (i=1; i<=num; i++) if (!f[i]) ans=(ans*ksm(a[i],s[i]))%ha,min=min(min,a[i]),max=max(max,a[i]);
for (i=m; i; i--)
if (q[i].q=='b')
if (q[i].q=='s')
if (q[i].q=='m')
if (q[i].q=='t')
}for (ll i=1; i<=m; i++) if (q[i].q!='d') printf("%lld\n",q[i].y);
}
賭神(逆向思維)
時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 買定離手,買定離手!到底誰能捧盃本次新生賽?億電競的投資人 億大佬 向你介紹遊戲規則 你可以參與數次競猜,每次競猜都有兩個待選隊伍a和b 當然不是競猜新生賽的隊員哈 你...
逆向思維(域外箴言)
因閉口不言而讓別人以為你是傻瓜,比因為張嘴說話而證實別人的猜想,要明智得多。事先如果沒有充分的準備,我無法做好即興演講。一定要聽父母的話 當他們在場的時候。防止受 的好辦法很多,其中最保險的方法是做個膽小怕事的人。行善是偉大的 勸人行善更偉大,而且做起來也更容易。我從不讓學校生活干擾我學習真正的知識...
Flower 規律 逆向思維)
flower 傳送門 題解 逆向思維 規律 因為每次剪n 1,所以逆向就是控制n 1朵不變,每次增高1朵,直到所有等高,即所有的高度都等於最高的那一朵,記錄增高的次數為sum,反過來就是最高的那個減少sum,如果減少sum後小於1則不成立,大於等於1,則需要減少sum次。sum 每朵花與最高的差的和...