L1 006 連續因子

2021-08-17 10:18:52 字數 1180 閱讀 6604

時間限制

400 ms

記憶體限制

65536 kb

**長度限制

8000 b

判題程式

standard 作者

陳越乙個正整數n的因子中可能存在若干連續的數字。例如630可以分解為3*5*6*7,其中5、6、7就是3個連續的數字。給定任一正整數n,要求編寫程式求出最長連續因子的個數,並輸出最小的連續因子序列。

輸入格式:

輸入在一行中給出乙個正整數n(131)。

輸出格式:

首先在第1行輸出最長連續因子的個數;然後在第2行中按「因子1*因子2*……*因子k」的格式輸出最小的連續因子序列,其中因子按遞增順序輸出,1不算在內。

輸入樣例:

630
輸出樣例:
3

5*6*7

題意:分析:

本題是暴力,但是也要想到技巧,不然你會陷入乙個很麻煩的境地,自己到最後都迷了,在開始寫之前應該有清晰的思路,我們設想一下,如果如果該數的連續因子,因為是相乘得結果,所以我們大可不必從 n 開始,可以從根號 n 開始,因為你想啊,比根號 n 還大的數,連續的兩個數相乘得到的結果肯定比 n 大,只有 小於根號 n 的才有可能,所以第一趟迴圈我們要從根號 n 開始,到 2 ,因為不包括 1 ,如果遇見被 n 出盡的數,我們將次數儲存下來,再從比次數小 1 的元素開始到 2,進行遍歷,看是否存在連續的,一旦不能除盡,肯定就不連續了,立即跳出,對於每次的遍歷,我們應該儲存其連續因子和個數,方便後面統計。好了我們來瞅瞅**實現吧!

#include#include#include#include#includeusing namespace std;

int main()

}else///只要不能整除,立即跳出

break;}}

if(j>=maxn)

/**更新最大的廉租因子,這裡注意是大於或等於,分析中已經詳細的說了,

如果有一樣長的連續因子,我們要保留最小的那個*/

if(bj)

break;

}if(maxn==0)///說明該數是素數,因子就1和自身,1不包括,只能輸出自身

else

}return 0;

}

L1 006 連續因子

乙個正整數n的因子中可能存在若干連續的數字。例如630可以分解為3 5 6 7,其中5 6 7就是3個連續的數字。給定任一正整數n,要求編寫程式求出最長連續因子的個數,並輸出最小的連續因子序列。輸入格式 輸入在一行中給出乙個正整數n 131 輸出格式 首先在第1行輸出最長連續因子的個數 然後在第2行...

L1 006 連續因子

乙個正整數n的因子中可能存在若干連續的數字。例如630可以分解為3 5 6 7,其中5 6 7就是3個連續的數字。給定任一正整數n,要求編寫程式求出最長連續因子的個數,並輸出最小的連續因子序列。輸入格式 輸入在一行中給出乙個正整數n 131 輸出格式 首先在第1行輸出最長連續因子的個數 然後在第2行...

L1 006 連續因子

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 乙個正整數n的因子中可能存在若干連續的數字。例如630可以分解為3 5 6 7,其中5 6 7就是3個連續的數字。給定任一正整數n,要求編寫程式求出最長連續因子的個數,並輸出最小的連...