1. 程式人生 > 其它 >【專案實戰】泰坦尼克號的倖存者預測

【專案實戰】泰坦尼克號的倖存者預測

題目連結 https://pintia.cn/problem-sets/994805046380707840/problems/994805138600869888

1、因子個數不超過sqrt(n)+1

2、如果n為1或質數,那麼只有一個因子。所以用一個變數first來記錄連乘的第一個因子,若first始終沒有改變,則n為1或質數

3、不斷構造連乘,如果連乘的積是n的因子,則計算連乘因子的個數是否比已記錄的個數多


 

放AC程式碼

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     long long n;
6 cin>>n; 7 int temp=1;//因子的乘積 8 int first=0;//記錄第一個因子 9 int len=0;//連續因子的長度 10 int maxn=sqrt(n)+1; 11 for(int i=2; i<=maxn; i++) 12 { 13 int j; 14 temp=1; 15 for(j=i; j<=maxn; j++) 16 { 17 temp*=j; 18 if(n%temp!=0
) 19 break; 20 } 21 if(j-i>len) 22 { 23 len=j-i; 24 first=i; 25 } 26 } 27 if(first==0) 28 cout<<1<<endl<<n; 29 else 30 { 31 cout<<len<<endl; 32 for(int i=0; i<len; i++)
33 { 34 cout<<first+i; 35 if(i!=len-1) 36 cout<<'*'; 37 } 38 } 39 return 0; 40 }