PTA 天梯賽備賽 L1-006 連續因子 (20 分)(搜尋)
題目描述
L1-006 連續因子 (20 分)
一個正整數 N 的因子中可能存在若干連續的數字。例如 630 可以分解為 3×5×6×7,其中 5、6、7 就是 3 個連續的數字。給定任一正整數 N,要求編寫程式求出最長連續因子的個數,並輸出最小的連續因子序列。
輸入格式:
輸入在一行中給出一個正整數 N(1<N<231)。
輸出格式:
首先在第 1 行輸出最長連續因子的個數;然後在第 2 行中按 因子1因子2……*因子k 的格式輸出最小的連續因子序列,其中因子按遞增順序輸出,1 不算在內。
輸入樣例:
630
輸出樣例:
3
5*6*7
解題思路
感覺被這個樣例導致理解錯誤了,我原本以為是要輸出因子的個數,然後求出連續因子序列,然後通過 因子的個數*所有連續因子序列
使得結果和輸入的 N
相等,完全理解錯了…
正確思路:
連續的找因子,對於 N
,我們每次對它的因子進行整除,如果可以的話,因子就加1,同時長度也加1,最後不能整除後,就返回此時連續因子的長度,同時更新左邊最開始的因子。那麼迭代之後,我們就能找到最長長度的連續因子序列,然後也能得到連續因子序列的起始值,這樣我們最終結果就能得到了。
另外,注意點是,如果長度一直為0,那麼代表這個數為素數,那麼特判一下,直接輸出
1
N(代表輸入的數字)
提交程式碼
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n;
ll dfs(ll n,ll b,ll len){ //剩餘被除數,因子,長度
if(n%b==0)
return dfs(n/b,b+1,len+1);
return len;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n;
ll len=0;
ll left=0;
for(ll i=2;i*i<=n;i++){
if(n%i==0){
ll res = dfs(n,i,0);
if(res>len){
len=res;
left=i;
}
}
}
if(len==0)
cout<<1<<endl<<n<<endl;
else{
cout<<len<<endl;
for(ll i=1;i<=len;i++){
if(i==1) cout<<left+i-1;
else cout<<"*"<<left+i-1;
}
cout<<endl;
}
return 0;
}
提交結果
學如逆水行舟,不進則退
相關文章
- 暴力解法破解PTA L1-006 連續因子 (20分)
- zzuli 20級第八次周賽 2750: 連續因子
- pta天梯賽L1-008 求整數段和 c++(10分)C++
- 天梯賽賽前總結
- 2019 天梯賽 PTA L2-032 彩虹瓶 (25 分) -堆疊的簡單模擬
- 天梯賽隨筆
- SMUSpring天梯賽1Spring
- 2021CCCC天梯賽
- 天梯賽 裝睡(java)Java
- 2022天梯賽-全國總決賽覆盤賽
- Wanafly挑戰賽25 A因子
- 2024年天梯賽
- SMU 2024 spring 天梯賽3Spring
- SMU 2024 spring 天梯賽1Spring
- PTA搜尋專題部分題解
- 2024團體程式設計天梯賽——賽後總結程式設計
- №20190120:因子加值數的附加賽事
- №20190117:因子加值數的修正賽事
- L1-6 吃火鍋 (15分)(2020天梯賽)
- 2024天梯選拔賽(一)
- 2024天對程式設計天梯賽程式設計
- 演算法競賽——BFS廣度優先搜尋演算法
- 團體程式設計天梯賽L2-022 重排連結串列程式設計
- 2018天梯賽、藍橋杯、(CCPC省賽、邀請賽、ICPC邀請賽)校內選拔賽反思總結!
- 2020.10.21備賽
- 持續學習——程式猿的軍備競賽
- PTA 狼人殺-簡單版 (20分)
- 團體程式設計天梯賽-練習集 L2-031 深入虎穴 (25分) dfs深搜+bfs廣搜的兩種思路程式設計
- L2-3 完全二叉樹的層序遍歷 (25分) 2020天梯賽總決賽二叉樹
- 搜尋引擎es-分詞與搜尋分詞
- 團體程式設計天梯賽-練習集程式設計
- hdu 1175 連連看 搜尋
- Win10 20H1/20H2搜尋框如何禁用網路搜尋 Win10 20H1/20H2搜尋框禁用網路搜尋的步驟Win10
- Finbold:“賽博朋克2077”關鍵詞搜尋量全球飆升426.31%
- 賽博超變?作惡的搜尋引擎正在讓全體網民實際體驗賽博朋克
- 搜尋全家桶(未完待續)
- 天梯選拔賽2補題_2024_03_09
- 山東理工大學2020年全國天梯賽賽前個人專題強化賽---C(最短路)