對於乙個序列a,給定兩個操作
0:將l~r乘上x
1:查詢πr
i=lφ
(a[i
])mo
d1000000007
對於每個詢問輸出答案
5 2 3 4 5 6
3 1 1 5
0 2 3 6
1 2 3
32 48
發下小於600的素數只有109個 然後φ
的公式為φ(
n)=n
(1−1
p1)(
1−1p
2)(1
−1p3
)……
那麼只需要維護a[l~r]的積和每個素數在[l~r]區間內出現的次數即可
110棵線段樹
#include
#include
#include
#include
#define ll long long
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define n 10100
#define mo 100000007
using namespace std;
ll n,m,a[n],root[610],sb[610],ny[610];
struct note;
note t1[500000];
struct nooe;
nooe t[120][50100];
ll mi(ll a,ll b)
void dow(int v,int i,int j)
void cha(int v,int i,int j,int
x,int
y,int z)
intm=(i+j)/2;if(t1[v].l>1) dow(v,i,j);
if(y
<=m) cha(v*2,i,m,x,y,z);
else
if(x>m) cha(v*2+1,m+1,j,x,y,z);
else cha(v*2,i,m,x,m,z),cha(v*2+1,m+1,j,m+1,y,z);
t1[v].d=t1[v*2].d*t1[v*2+1].d%mo;
}ll fin(int v,int i,int j,int
x,int
y)void down(int
q,int v,int i,int j)
void insert(int
q,int v,int i,int j,int
x,int
y) if(t[q][v].l) down(q,v,i,j);int
m=(i+j)/2;
if(y
<=m) insert(q,v*2,i,m,x,y);
else
if(x>m) insert(q,v*2+1,m+1,j,x,y);
else insert(q,v*2,i,m,x,m),insert(q,v*2+1,m+1,j,m+1,y);
t[q][v].d=t[q][v*2].d+t[q][v*2+1].d%mo;
}ll find(int
q,int v,int i,int j,int
x,int
y)int main()
if(bz) root[i]=++root[0],ny[root[0]]=mi(i,mo-2),sb[root[0]]=i;
}fo(j,1,n*50) t1[j].d=t1[j].l=1;
fo(i,1,n) scanf("%lld",&a[i]),cha(1,1,n,i,i,a[i]);
fo(i,1,n)
if(jy>1) insert(root[jy],1,1,n,i,i);
}int
q;scanf("%d",&q);
for(;q;q--)
printf("%lld\n",ans);
}else
if(z>1) insert(root[z],1,1,n,x,y);}}
}
NOIP2016提高組總結
這次noip可以用幾個字來形容 浪的飛起,頹的不行。中午從校門出發,在車上睡了半個車程。4 00左右,霧比較大,遠處的小蠻腰若隱若現。你好,廣州。5 00,symbol叫我們去看考場,結果被拒在門外,然後大家都散了。我與其它幾位小夥伴匆匆吃完飯,回到酒店,該看電視看電視,中途開會,提醒我們一些注意事...
NOIP2016 提高組 總結
這是倒數第三次noip了。今年我初三。去年的傷痕還未褪去,我在比賽前意識到,當務之急其實是鞏固基礎而非深究一些難題。於是賽前兩周,我認真讀了白書的前面部分,尤其重點練習了dp。dp作為基礎演算法之一,其靈活性極高,所以可以出得很難,也是各種比賽的寵兒。練好dp是尤為重要的。賽前好幾場模擬賽都做得很爛...
NOIP2016提高組總結
來到了廣州,不錯啊,旁邊的飯店很多,可以好好的腐一下了。一群人走進了乙個小巷,住進了乙個七天酒店,發現房間裡面好小啊。吃完飯後,一直都在腐敗。通知開會的同學並沒有到我們的房間來,結果在結束開會的前幾分鐘我們才過去。早早的睡了 第一天,狀態不錯。早早的到了考場。開啟c 發現除錯不了,嚇了我一大跳。做到...