時間限制: 1 s
空間限制: 32000 kb
所謂角谷猜想,即給定乙個正整數 n,對 n 反覆進行下列兩種變換:
1)如果n是偶數,就除以2;
2)如果n是奇數,就乘以3加1。
最後的結果總是1。
我們把從 n 變換到 1 所需要進行的變換次數稱做 n 的變換長度,如數字 7 的變換為:
7-22-11-34-17-52-26-13-40-20-10-5-16-8-4-2-1
共進行了 16 次變換,因而 7 的變換長度為 16。
wish 現在對乙個給定區間內的最長變換長度比較感興趣,但是手算起來計算量太大,於是他又找到了參加資訊學競賽的你,
你可以幫助他嗎?
輸入描述 input description
每個測試點包含多組資料,第一行乙個數 t,表示資料個數。
第二行至第 t+1 行,每行兩個數 a、b,表示求 a 和 b 之間數(包含 a、b)的最長變換長度。
輸出描述 output description
輸出格式
t 行,每行輸出對應輸入資料的各個區間的最長變換長度。
樣例輸入 sample input
21 7
9 20
樣例輸出 sample output
1620
資料範圍及提示 data size & hint
資料範圍
1 <= t <= 100
1 <= a, b <= 10^8
區間長度不超過 10^5
本題的思路就是開乙個大點的陣列預先存放好結果, 然後再記憶化搜尋就快多了,介於本題的數量級
要用到64位整數
#include#includeint a[1000000];
//dfs這裡應該很好理解吧
int dfs(long long i)
if (i % 2 == 0)
return dfs(i / 2) + 1;
else return dfs(i * 3 + 1) + 1;
}int main()
int m, n, j, t, sum;
scanf("%d", &t);
while (t--)
sum = 0;
for (i = m; i <= n; i++)
printf("%d\n", sum);
} return 0;
}
codevs2969角谷猜想(記憶化搜尋 分塊)
所謂角谷猜想,即給定乙個正整數 n,對 n 反覆進行下列兩種變換 1 如果n是偶數,就除以2 2 如果n是奇數,就乘以3加1。最後的結果總是1。我們把從 n 變換到 1 所需要進行的變換次數稱做 n 的變換長度,如數字 7 的變換為 7 22 11 34 17 52 26 13 40 20 10 5...
驗證角谷猜想
total submission s 7305 accepted submission s 3767 problem description 數論中有許多猜想尚未解決,其中有乙個被稱為 角谷猜想 的問題,該問題在 五 六十年代的美國多個著名高校中曾風行一時,這個問題是這樣描述的 任何乙個大於一的自然...
21 角谷猜想
總時間限制 1000ms 記憶體限制 65536kb 描述 所謂角谷猜想,是指對於任意乙個正整數,如果是奇數,則乘3加1,如果是偶數,則除以2,得到的結果再按照上述規則重複處理,最終總能夠得到1。如,假定初始整數為5,計算過程分別為16 8 4 2 1。程式要求輸入乙個整數,將經過處理得到1的過程輸...