哈尔滨理工大学第六届程序设计团队 E-Mod

/*
成功水过,哈哈哈,可能数据水吧
*/
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <queue>
#include <set>
#define t_mid (l+r >> 1)
#define ls (o<<1)
#define rs (o<<1 | 1)
#define lson ls,l,t_mid
#define rson rs,t_mid+1,r
using namespace std;
typedef long long ll;
const int N = + ;
int a[N],c[N<<],n;
void build(int o,int l,int r)
{
if(l==r) {c[o] = a[l];return;}
build(lson);
build(rson);
c[o] = min(c[ls],c[rs]);
} int query(int ql,int qr,int o,int l,int r,int x)
{
if(l==r)
{
if(c[o] <= x) return l;//找到比他小的了
else return -;
}
int ans = -;
if(t_mid >= ql && c[ls] <= x)
{
ans = query(ql,qr,lson,x);
if(ans == -)
{
if(t_mid < qr && c[rs] <= x) ans = query(ql,qr,rson,x);
}
return ans;
}
else if(t_mid < qr && c[rs] <= x) return query(ql,qr,rson,x);
return -;
} int main()
{
//freopen("C:\\Users\\acer\\Desktop\\in.txt","r",stdin);
int T;scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",a+i);
build(,,n); int q;
scanf("%d",&q);
while(q--)
{
int op;
scanf("%d",&op);
int now =op;
int l=;
while(l <=n)
{
l=query(l,n,,,n,now);
if(l == -) break;
now %= a[l];
}
printf("%d\n",now);
}
}
}
上一篇:在 2016 年学 JavaScript 是一种什么样的体验?(React从入门到放弃)


下一篇:mysql主从复制的配置总结