題目描述
如果乙個數 x的約數和 y(不包括他本身)比他本身小,那麼 x 可以變成 y,y 也可以變成 x。例如 4 可以變為 3,1 可以變為 7。限定所有數字變換在不超過 n 的正整數範圍內進行,求不斷進行數字變換且不出現重複數字的最多變換步數。
輸入格式
輸入乙個正整數 n。
輸出格式
輸出不斷進行數字變換且不出現重複數字的最多變換步數。
樣例樣例輸入
7
樣例輸出
3
樣例說明
一種方案為 4→3→1→7。
資料範圍與提示
對於 100%的資料,1≤n≤50000。
首先預處理出小於n的每個數的約數和sum[i]。
對於每個數i,如果sum[i]顯然最後的結果是一棵樹,問題就轉化為了求這棵樹的直徑。
一棵樹的直徑被根節點分為兩段,分別是根結點到距離根最遠的兩個葉子。
用dis[i]表示以i為根的子樹到葉子結點的最長路徑,dis2表示次長路徑。
對於每個點i,更新其子結點的dis和dis2即可。
**:
#include#include#include#include#include#define maxn 100010
using namespace std;
int sum[maxn],dis[maxn],dis2[maxn],n,cnt,ans;
int main()
} for(int i=n;i>=1;i--)
else if(dis[i]+1>dis2[j]) dis2[j]=dis[i]+1;
} }for(int i=1;i<=n;i++) if(dis[i]+dis2[i]>ans) ans=dis[i]+dis2[i];
cout
}
LOJ10155 數字轉換
題目鏈結 如果乙個數x的約數和 不包括它本身,下同 比它本身小,那麼x可以變成它的約數和 如果對於某個y x且y的約數和為x,那麼x也可以變成y。例如,4可以變為3,1可以變為7。限定所有的數字變換在不超過n的正整數範圍內進行,求不斷進行數字變換且沒有重複數字出現的最多變換步數。輸入乙個正整數n。輸...
LOJ 6274 數字 數字dp
題目描述 nirobc 姐姐腦洞了兩個數字 和 它們滿足 且 nirobc 姐姐想知道 有多少種不同的取值,若有多組 的 值相同,則只算一次。其中 表示按位取或,c c 中寫作 pascal中寫作or 其中 表示按位取與,c c 中寫作 pascal中寫作and 輸入格式 一行,五個非負整數 輸出格...
LOJ10164 數字遊戲
題目描述 科協裡最近很流行數字遊戲。某人命名了一種不降數,這種數字必須滿足從左到右各位數字成小於等於的關係,如 123123123,446446446。現在大家決定玩乙個遊戲,指定乙個整數閉區間 a,b a,b a,b 問這個區間內有多少個不降數。輸入格式 有多組測試資料。每組只含兩個數字 a,ba...