時間限制
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輸出樣例:
35*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,要求編寫程式求出最長連續因子的個數,並輸出最小的連...