HDU5875:Function

时间:2023-03-09 09:51:20
HDU5875:Function

题目链接:

Function

分析:

icpccamp里的方法不会,我用了一个nex[]数组存储当前点ai需要取模的下一个点aj的编号j,如果aj>ai,就不用遍历。

时间为920ms

代码:

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; int t,n,q,l,r,a[],nex[]; int main()
{
for(scanf("%d",&t);t--;)
{
scanf("%d",&n);
for(int i=;i<=n;++i) scanf("%d",a+i);
for(int i=;i<=n;++i)
{
nex[i]=-;
for(int j=i+;j<=n;++j) if(a[j]<=a[i]) {
nex[i]=j;
break;
}
}
scanf("%d",&q);
while(q--)
{
scanf("%d %d",&l,&r);int x=a[l];
for(int j=nex[l];j<=r;j=nex[j])
{
if(j==-) break;
x%=a[j];
}
printf("%d\n",x);
}
}
}