description
男從戎,女守家。一夜,狼煙四起,男戰死沙場。從此一道黃泉,兩地離別。最後,女終於在等待中老去逝去。逝去的最後是換盡一生等到的相逢和團圓。
某日兩人至奈何橋前,服下孟婆湯。
每滴孟婆湯都有強度不一的藥效,設一碗孟婆湯共n滴(0
<n<100000)
,其中第i滴(
0≤i<
n)用b[i]
表示。 孟婆湯的藥效與原料有關,設熬制前同樣有n
滴原料,第
i滴原料用
a[i]
表示,0
≤a[i]
<2^32
。 藥效b[i]
的計算方法為
b[i]=(a[0]*a[1]*...*a[n-1]/a[i])%m
(假設0/0=1),0
<b[i]
<2^32。
input
多組輸入資料。
每組第一行給出原料數量n
,取模數
m,緊接著的一行按順序給出原料
a[i]。
output
求出熬製所成每份孟婆湯的藥效b[i]
,每份之間用空格隔開,每組資料之後以換行結尾。
sample input
5 11
2 7 5 3 9
3 79 8 5
sample output
10 6 4 3 1
5 3 2
source
2014 winter holiday contest 2
第一眼我們就能看出來
b[i]
就是除了
a[i]
項之外所有的項相乘;
腫麼辦??
求每個元素都便利一遍?肯定是不行的時間複雜度o(
n*n) 額……
所以肯定不能那麼暴力
不過 我們這樣想
b[i]
不就是前面的乘積乘上後面的乘積嗎 就差一點就找到出路了
是不是很興奮 啊啊啊啊啊 是啊
我們可以開兩個陣列
: 第乙個陣列 第
i項表示前
i項的乘積
的二個陣列 第
i項表示
i+1項到最後一項的乘積
問題迎刃而解 時間複雜度完全降下來
#includeconst int n=100010;
long long a[n],b[n],c[n];
int main()
c[n+1]=1;
for(i=n;i>=1;i--)
printf("%lld",c[2]);
for(i=2;i<=n;i++)
printf(" %lld",b[i-1]*c[i+1]%m);
printf("\n");
}return 0;
}
哈工大LTP使用
coding utf 8 from pyltp import sentencesplitter from pyltp import segmentor from pyltp import postagger from pyltp import namedentityrecognizer from p...
哈工大對抗甲流
隨著哈爾濱部分高校發現甲流確診病例,隨著黑龍江大學封校,氣氛為之一緊,可是沒有執行一天的查證制度隨著時間的流逝而成了擺設。大家說 流感很遠,十一很近。但是十一也很遠了,學校發布公告,十一長假期間,除了十月一日外,其餘時間正常上課,不允許離開哈爾濱市。發現私自離開的,需要休學一年。本部的決定影響了哈工...
哈工大mooc測試1
在分組交換網路中,主要取決於網路擁塞程度的時間延遲是 伺服器端套接字繫結的ip位址是 通告smtp伺服器端開始傳送郵件內容的smtp命令是 下列tcp ip應用層協議中,可以使用傳輸層無連線服務的是 假設採用p2p方式為1000個客戶分發檔案f,檔案f初始位於某伺服器上 伺服器介入internet鏈...