l1-6.最長連續因子
乙個正整數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 題解;
暴力解決,從i=
sqrt
(n) 往回掃。
需要注意的問題(理清的思路):
(1)假設前i個數中,有n的最長連續因子比如為7∗
6∗5 ,那麼只需要判斷7是否為n的因子,並且
7 的前一位
6是否是n/
7 的因子,迴圈下去即可。(這是要保證5∗
6∗7 為
630=3∗
5∗6∗
7 中的一部分,也可以說是要保證這些連續因子的乘積在n之內,比如n=120,其最長連續因子為2∗
3∗4∗
5 ,而不是2∗
3∗4∗
5∗6 )\\這裡我參考了walker這哥們的題解,因為我之前認為只要是其因子且連續便可滿足,然後交上去只對了一部分,那位哥們鏈結如下:
(2)這題我今晚寫了兩個多小時,腦子快**了其中我還遇到了挺多疑惑,暫時想不起了,想到再寫上來以解決很多和我一樣剛接觸acm的小白,這也是我第一篇部落格,所以不是很專業,見諒。
下面是ac**:(**我就先不注釋了,看不懂的問我,大神忽略)
#include#includeusing namespace std;
int main()
}if(cnt>=t)
}return 0;
}
PAT L1 6 連續因子 暴力
時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 乙個正整數n的因子中可能存在若干連續的數字。例如630可以分解為3 5 6 7,其中5 6 7就是3個連續的數字。給定任一正整數n,要求編寫程式求出最長連續因子的個數,並輸出最小的連...
團體天梯 PAT L1 6 連續因子
乙個正整數 n 的因子中可能存在若干連續的數字。例如 630 可以分解為 3 5 6 7,其中 5 6 7 就是 3 個連續的數字。給定任一正整數 n,要求編寫程式求出最長連續因子的個數,並輸出最小的連續因子序列。輸入格式 輸入在一行中給出乙個正整數 n 1輸出格式 首先在第 1 行輸出最長連續因子...
pat L1 006 連續因子
直接搜尋因子。注意題幹要求因子的乘積不大於n。輸出最小的乘積的因子,即 如果沒有連續的因數,那麼輸出最小的那個因數。include include include include include include include using namespace std typedef long lon...