時間限制:
4000 ms | 記憶體限制:
65535 kb
難度: 2
描述 mod是取餘運算,在程式中用符號"%"來表示。
如3 % 7 = 3,7 % 5 = 2,0 % 4 = 0。
ocean用巧妙的方法得到了乙個序列,該序列有
nn 個元素,我們用陣列
aa 來記錄(下標從
00 到
n−1ocean定義f[i] = (((i % a[0]) % a[1]) % ...) % a[n-1]。
現在ocean會給出q次查詢,每次給定乙個區間[l, r],他想快速知道f[l] + ... + f[r]的值。
輸入第一行輸入乙個整數t,代表有t組測試資料。
每組資料佔多行,第一行輸入乙個整數n,代表元素個數。
下面一行輸入n個整數ai。
下面一行輸入乙個整數q,代表q次查詢。
接下來q行,每行輸入兩個整數l, r,代表查詢的區間。
注:1 <= t <= 20,1 <= n,q <= 1000,1 <= ai <= 100000,1 <= l <= r <= 100000。
輸出對每組資料,依次輸出q行,每行輸出對應的查詢結果。
樣例輸入
2樣例輸出5 5 4 3 2 1
41 100000
2 100000
3 100000
4 100000
55 5 5 5 5
41 100000
2 100000
3 100000
4 100000
0001)這個題目資料規模比較大,適合使用打表法(一次性將所有資料計算出來,存入陣列中)0200000
199999
199997
199994
2)多次取餘,如果後面的除數大於前面的,無效可以去除
3)使用二分查詢(這裡使用c++模板庫的lower_bound()函式)
4)如果除數列表中有1,則所有結果都是0
#include #include #include #define maxsize_1 1010
#define maxsize_2 100010
using namespace std;
int a[maxsize_2]=;//存放打表資料
int b[maxsize_1];//存放除數
int main()}}
if(!flag)
a[i]=a[i-1]+k;}}
int q,l,r;
scanf("%d",&q);
while(q--)}}
return 0;
}
南陽題目169 素數
時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 走進世博園某資訊通訊館,參觀者將獲得前所未有的尖端互動體驗,一場充滿創想和喜悅的資訊通訊互動體驗秀將以全新形式呈現,從觀眾踏入展館的第一步起,就將與手持終端密不可分,人類未來夢想的驚喜從參觀者的掌上展開。在等候區的夢想花園中,參...
南陽oj 題目57 6174問題
時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 假設你有乙個各位數字互不相同的四位數,把所有的數字從大到小排序後得到a,從小到大後得到b,然後用a b替換原來這個數,並且繼續操作。例如,從1234出發,依次可以得到4321 1234 3087 8730 378 8352 85...
南陽oj 題目198 數數
時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 我們平時數數都是喜歡從左向右數的,但是我們的小白同學最近聽說德國人數數和我們有些不同,他們正好和我們相反,是從右向左數的。因此當他看到123時會說 321 現在有一位德國來的教授在鄭州大學進行關於acm的講座。現在他聘請你來擔任...