PAT1096 Consecutive Factors (20)(逻辑)
生活随笔
收集整理的這篇文章主要介紹了
PAT1096 Consecutive Factors (20)(逻辑)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
一個正整數N的因子中可能存在若干連續的數字。例如630可以分解為3*5*6*7,其中5、6、7就是3個連續的數字。給定任一正整數N,要求編寫程序求出最長連續因子的個數,并輸出最小的連續因子序列。
思路:
這題沒想出來?;舅悸肥莕最多為12個連續的數相乘,這樣就從len=12到1倒序遍歷,再從i開始連續乘len個數,如果積等于n就輸出,注意最后要輸出素數的情況。
#include<iostream> #include<algorithm> #include<vector> #include<cmath> #include<map> #include<set> using namespace std;int main() {int n;scanf("%d", &n);int temp = sqrt(n);for (int len = 12; len >= 1; len--) {for (int start = 2; start <= temp; start++) {long long ans = 1;for (int i = start; i - start+1 <= len; i++) {ans *= i;}if (n%ans == 0) {printf("%d\n%d", len, start);for (int i = start + 1; i - start+1 <= len; i++) {printf("*%d", i);}return 0;}}}printf("1\n%d", n);return 0; }轉載于:https://www.cnblogs.com/seasonal/p/10343610.html
總結
以上是生活随笔為你收集整理的PAT1096 Consecutive Factors (20)(逻辑)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Confluence 6 使用 JCon
- 下一篇: 被忽视的ArrayList,你知道多少