PTA天梯赛L1-006 连续因子 (20分)
生活随笔
收集整理的這篇文章主要介紹了
PTA天梯赛L1-006 连续因子 (20分)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目:
一個(gè)正整數(shù) N 的因子中可能存在若干連續(xù)的數(shù)字。例如 630 可以分解為 3×5×6×7,其中 5、6、7 就是 3 個(gè)連續(xù)的數(shù)字。給定任一正整數(shù) N,要求編寫程序求出最長(zhǎng)連續(xù)因子的個(gè)數(shù),并輸出最小的連續(xù)因子序列。
輸入格式:
輸入在一行中給出一個(gè)正整數(shù) N(1<N<2312^{31}231??? )。
輸出格式:
首先在第 1 行輸出最長(zhǎng)連續(xù)因子的個(gè)數(shù);然后在第 2 行中按 因子1因子2……*因子k 的格式輸出最小的連續(xù)因子序列,其中因子按遞增順序輸出,1 不算在內(nèi)。
輸入樣例:
630
輸出樣例:
3
567
分析:
這個(gè)題我wa了很遍,有必要寫一下:
1.讀通題意,是連續(xù)的因子,而且連續(xù)的因子相乘,還為原數(shù)的因子。
2.同是原數(shù)因子問(wèn)題,while循環(huán)不能改變i,保證每一個(gè)因子便利一遍。
簡(jiǎn)單題卡了我一個(gè)小時(shí),垃圾
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; }總結(jié)
以上是生活随笔為你收集整理的PTA天梯赛L1-006 连续因子 (20分)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: I - Interesting Perm
- 下一篇: 团体程序设计天梯赛-练习集L1-011