PTA天梯赛L1-006 连续因子 (20分)
生活随笔
收集整理的這篇文章主要介紹了
PTA天梯赛L1-006 连续因子 (20分)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:
一個正整數 N 的因子中可能存在若干連續的數字。例如 630 可以分解為 3×5×6×7,其中 5、6、7 就是 3 個連續的數字。給定任一正整數 N,要求編寫程序求出最長連續因子的個數,并輸出最小的連續因子序列。
輸入格式:
輸入在一行中給出一個正整數 N(1<N<2312^{31}231??? )。
輸出格式:
首先在第 1 行輸出最長連續因子的個數;然后在第 2 行中按 因子1因子2……*因子k 的格式輸出最小的連續因子序列,其中因子按遞增順序輸出,1 不算在內。
輸入樣例:
630
輸出樣例:
3
567
分析:
這個題我wa了很遍,有必要寫一下:
1.讀通題意,是連續的因子,而且連續的因子相乘,還為原數的因子。
2.同是原數因子問題,while循環不能改變i,保證每一個因子便利一遍。
簡單題卡了我一個小時,垃圾
AC代碼:
#include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> using namespace std; int n,a,b,num,ma,x,y;int main() {scanf("%lld",&n);int m=sqrt(n);b=n,num=ma=0;for(int i=2; i<=m; i++)if(n%i==0){num=0;x=y=i;while(n%x==0){num++;y++;x*=y;}if(num>ma){ma=num;b=i;}}if(ma==0)ma=1;printf("%d\n",ma);printf("%d",b);for(int i=b+1; i<b+ma; i++)printf("*%d",i);printf("\n");return 0; }總結
以上是生活随笔為你收集整理的PTA天梯赛L1-006 连续因子 (20分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: I - Interesting Perm
- 下一篇: 团体程序设计天梯赛-练习集L1-011