人類史上最大最好的希望事件 HDU6462

2021-09-12 17:50:07 字數 2130 閱讀 6809

problem description

作為cncs的半壁江山,狗哥常常在宇宙中心邵陽眺望黃浦江,夜晚的星空總是迷人,有時候還能見到彗星滑落。

狗哥是幸運的,他在兩秒鐘內看到了十七顆彗星劃過天際,作為打acm的學者,自然不會有「穩定-1」情況。他開始研究彗星運動的軌跡,發現他們都遵照斐波那契螺旋線在運動著。

尤里卡!狗哥覺得這就是找尋「生命,宇宙和一切的終極答案」的精要所在,但是怎麼表示呢?狗哥覺得求取斐波那契螺旋線經過的乙個個方格的面積之和就是公式的表現。

例如下圖,螺旋線每劃過乙個方格,都轉過了四分之一圈。如果我們以四分之一圈為單位,那麼我們用類似帶分數的形式表示螺旋線轉動的起點和終點。例如,0+0 到 0 + 1 意即從第乙個方格轉到第二個方格,劃過了前兩個方格,他們的面積之和為2(1+1)。同理,0+0 到 1+0 劃過了前五個方格,他們的面積之和為40(1+1+4+9+25)。

但是聰明的狗哥需要乙個程式去獲得指定範圍內的螺旋線面積之和,狗哥給了你一首「希望之花」的時間,而他需要利用這個時間去打出四暗刻單騎。如果你能完成這個程式,狗哥會封你為格拉摩根伯爵

input

不定組資料。

首先輸入乙個整數q,代表狗哥詢問次數。

接下來q行,每行四個整數a,b,c,d,代表狗哥想求 a+b 到 c+d 之間的螺旋線面積之和。

1<= q <= 10000

0<= a,c <= 10000

0 <= b,d <= 3

結果對192600817取模。

output

乙個數字,表示螺旋線面積之和。

sample input

40 0 0 1

0 0 1 0

1 2 2 1

1 1 0 3

40 0 0 1

0 0 1 0

1 2 2 1

1 1 0 3

sample output240

4791982

404791

98

題意很難理解,下面我來理一下題意:首先看一下abcd的範圍,0<= a,c <= 10000,0 <= b,d <= 3,也就是從0 0->0 1->0 2->0 3->1 0->1 1->1 2->1 3->……->1000 3,這樣呢不好書寫,我們可以轉換一下計數的方式,將0 0 預設為1    ,0 1預設為2……所以就得到了a b的位置 x=a*4+b+1。之後正方形的邊長就是斐波那契數列,面積就是邊長×邊長,題目的要求就是求ab到cd經過的正方形的面積之和。這時候就用到字首和了,先將sum陣列提前求出來,根據ab cd我們求出我們預設的位置x,y。答案就是sum[y]-sum[x-1].

注意1:一下當y

注意2:因為斐波那契是成指數遞增的,所以會出現超long long的情況,這時候就要考慮同餘定理了,就在能取模的地方都取一下模。

注意3:當你寫完程式時,一定要試一下這個樣例9999 1 9999 1,如果答案是負數,那請你看下面的解釋:因為是對192600817取模,有一種情況是x,y在192600817兩邊,挨的很近,那麼就會出現sum[y]%mm-sum[x-1]%mm<0的情況,這時候要特判一下,在加乙個192600817。

ac**:

#include #include #include #include #include #include #include #include using namespace std;

typedef long long ll;

const int max=40010;

const int mm=192600817;

deque dq;

ll ans[max]= ;

ll ans2[max]= ;

ll sum[max]= ;

void f()

int main()

{ ll t,i,j,n,m,a,b,c,d,x,y;

f();

while(cin>>t)

{for(i=0; i>a>>b>>c>>d;

x=a*4+b+1;

y=c*4+d+1;

if(y>=x)

{ll anss=(sum[y]%mm-sum[x-1]%mm)%mm;

if(anss<0)//避免出現注意3裡的情況。

cout《希望對你們有所幫助。

hdu 6462 人類史上最大最好的希望事件

作為cncs的半壁江山,狗哥常常在宇宙中心邵陽眺望黃浦江,夜晚的星空總是迷人,有時候還能見到彗星滑落。狗哥是幸運的,他在兩秒鐘內看到了十七顆彗星劃過天際,作為打acm的學者,自然不會有 穩定 1 情況。他開始研究彗星運動的軌跡,發現他們都遵照斐波那契螺旋線在運動著。尤里卡!狗哥覺得這就是找尋 生命,...

史上最好用的vim ide專案

專案功能 9.vim各種括號補全 彩虹顏色 10.fuzzy finder 模糊搜尋工具,vim下最快的檔案目錄搜尋工具 11.vim貼上縮排混亂解決方案 f1開啟 關閉vim paste模式 12.nerdtree git plugin 顯示檔案git倉庫 狀態 13.vim mini buffe...

ScribeFire 史上最好的文字編輯外掛程式

摘要 很多朋友都為發布文章時候的文字編輯發愁,今天偶爾發現了scribefire這個外掛程式。也是乙個很好的離線發布工具哦 看看是個蝦公尺東西 這篇文章就是用這個外掛程式發布的。發布?哈哈 是的 如果以下幾種中的一種系統是你正在用的 那你有福了 哈哈 設定很簡單,先要新增乙個你要發布的blog,在右...