哈理工oj618 Mod 二分查詢

2021-07-25 10:05:11 字數 995 閱讀 6110

kim剛剛學會c語言中的取模運算(mod)。他想要研究一下乙個數字a模上一系列數後的結果是多少。幫他寫個程式驗證一下。

input

第一行乙個整數t代表資料組數。

接下來t組資料,第一行乙個整數n,接下來n個數字ai

接下來一行乙個整數m,接下來m個數字bi。

output

對於每個bi,輸出bi%a1%a2%...%an 。

sample input

1

410 9 5 7

514 8 27 11 25

sample output

432

10

hint

在c語言中,a mod b 是 a%b

樣例解釋:

14%10%9%5%7=4

8%10%9%5%7=3

資料範圍:

1<=n<=100000

1<=m<=100000

1<=ai<=1000000000

0<=bi<=1000000000 

注意到不斷取模下去會越來越小,而且乙個數模a之後再模b,如果a比b小那麼模b就沒有意義了。所以對輸入的a陣列剔除所有沒用的數,剩下乙個遞減的陣列。在這個陣列上,每次二分找到距離當前x最接近且大於x的數,模上這個數重複這一過程即可。這個過程不會重複很多次。很快這個數就會小於所有的a,這時就獲得了答案。

#include

#include

using namespace std;

int main()

{int t,m,n;

int i,j,left,right,mid;

long long a[100005];

long long ai,bi;

scanf("%d",&t);

while(t--)

{scanf("%d",&n);

j=0;

for(i=0;i

哈理工oj 1073 病毒

description 某種病毒襲擊了某地區,該地區有n 1 n 50000 人,分別編號為0,1,n 1,現在0號已被確診,所有0的直接朋友和間接朋友都要被隔離。例如 0與1是直接朋友,1與2是直接朋友,則0 2就是間接朋友,那麼0 1 2都須被隔離。現在,已查明有m 1 m 10000 個直接朋...

哈理工OJ 2179 深搜

組合 time limit 1000 ms memory limit 32768 k total submit 7 5 users total accepted 6 5 users rating special judge no description 給出乙個正整數n,從集合 中找出所有大小為k的...

哈理工OJ 1584 青蛙過河 貪心 二分

青蛙王國一年一度的遊戲又開始了,這個遊戲要求青蛙必須跳過河。河的寬度是 l 河裡有n塊石頭,這n塊石頭從河的一邊筆直的連到另一邊。青蛙只能踩著石頭過河,如果它們掉到水裡,將被淘汰出局。遊戲規定青蛙最多跳m次。現在青蛙想要知道如果在這m步內跳到岸的那邊,它一步最長需要跳多長。input 輸入包括多組測...