noip即將迎來周年華誕。在這乙個春秋的歷程裡,noip領導全國oier,建設高效、穩定、快捷、開放的社會主義現代化oi。在新的一年裡,yzoj將再接再厲,積極探尋成長之路,更好地為廣大oier服務。
青蛙小c聽說noip要辦周年慶比賽,興沖沖得來到了z市,初始時他在座標x0處,小c是乙隻善於跳躍的青蛙,若當前他處在座標x處,每一次跳躍,他可以跳到4x+
34x+
3或8x+
78x+
7處,且由於體力原因,他最多能跳10000010
0000
次。根據z市的傳說,座標位置為100000000710
0000
0007
的整數倍的位置(如100000000710
0000
0007
、200000001420
0000
0014
)可以傳送到yzoj。小c想知道,最少跳幾次能傳送到yzoj。
輸入的第一行包含乙個整數x0表示青蛙的初始位置,保證x0在的範圍在[1,
1000000006][
1,10
0000
0006
]。輸出乙個整數,表示最少所需步數,若在10000010
0000
步內還無法傳送到yzo
jyzo
j,則輸出−1−
1。顯然,這一看就是一道數學題
那麼我們怎麼考慮呢?
如果你細心一點就會發現:4x
+3=2
∗(2x
+1)+
14x+
3=2∗
(2x+
1)+1
8x+7
=2∗(
2∗(2
x+1)
+1)+
18x+
7=2∗
(2∗(
2x+1
)+1)
+1那麼不就是說,只需要計算與2x+1有關的步數,然後推導普遍規律就行。
計算有幾次2x+1的過程太簡單,等會直接看**就行。下面分析處理結果的方法。
再跳回兩個式子:4x
+3=2
∗(2x
+1)+
14x+
3=2∗
(2x+
1)+1
8x+7
=2∗(
2∗(2
x+1)
+1)+
18x+
7=2∗
(2∗(
2x+1
)+1)
+1我們可以發現:最多的是由三個2x+1等構成(即8x+7),所以我們不妨考慮將結果先mod 3:
然後歸納一下就行了,具體看**:
#includeusing namespace std;
const int mod=1000000007;//定義mod
int ans;
int search(int x)//遞迴部分,ac
int y=((x%mod)*2+1)%mod;
ans++;
if(y==0)//等於0就是達成了整數倍
printf("%d",ans/3);
return 0;
} else
printf("%d",ans/3+1);
return 0;
} }else
search(y);//繼續走
return 0;
}int main()
if(ans%3==0)
printf("%d",ans/3);
else
return 0;
} }
printf("-1\n"); */
search(m);
return 0;
}
洛谷 P1635 跳躍
noip即將迎來周年華誕。在這乙個春秋的歷程裡,noip領導全國oier,建設高效 穩定 快捷 開放的社會主義現代化oi。在新的一年裡,yzoj將再接再厲,積極探尋成長之路,更好地為廣大oier服務。青蛙小c聽說noip要辦周年慶比賽,興沖沖得來到了z市,初始時他在座標x0處,小c是乙隻善於跳躍的青...
洛谷P5049 洛谷P5022 題解 旅行
原題 資料加強版 加強版 參考你谷題解 終於調過了 又是一如既往的申必錯誤 noi plus石錘了 原題的資料允許我們 o n 2 暴力斷邊,但是加強版的資料達到了 n log n 級別,我們必須在斷邊這一環節尋求更好的解法。考慮我們進入環後在何處回溯 根據繼續走環走到的點分類 設當前已經從 b 走...
洛谷練習P2279 P1346
2020年,人類在火星上建立了乙個龐大的基地群,總共有n個基地。起初為了節約材料,人類只修建了n 1條道路來連線這些基地,並且每兩個基地都能夠通過道路到達,所以所有的基地形成了乙個巨大的樹狀結構。如果基地a到基地b至少要經過d條道路的話,我們稱基地a到基地b的距離為d。由於火星上非常乾燥,經常引發火...