LOJ10155 數字轉換

2021-08-28 01:17:40 字數 952 閱讀 5873

題目描述

如果乙個數 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...