天梯賽 連續因子 整除光棍

2021-10-13 19:11:37 字數 1879 閱讀 5612

連續因子原題**:

#include

#include

#include

#include

using

namespace std;

bool

is_prime

(int n)

}return

true;}

intmain()

for(i =

2; i <

sqrt

(n)+

1; i++)}

if(a < j - i)}}

cout << a << endl;

for(i = b; i <= a + b -

1; i++

) cout << i;

}printf

("\n");

return0;

}

思路:

先判斷是否為質數,若是質數輸出固定內容,若不是就進行後續操作。記錄每乙個能被整除的數字,並且判斷接下來連續的幾個數字的乘積(這個很重要)是否能被整除。每次找到最長的因子串,最後輸出答案。

易錯點:

1.不要每次都變化輸入的n值,如果要變,一定要將n給乙個變數再對這個變數進行操作。(最好不要修改n值)

2.​注意的是,需要判斷的是連續幾個數字的乘積是否為n的某個因子,而不是連續的幾個數字單獨的是否為某個數的因子。

3.需要及時的修改中間答案和開始的賦初值操作。

整除光棍原題**:

錯誤示例:

#include

using

namespace std;

int p[

1005

], t[

1005

], m[

1005];

boolpd(

)if(lsp ==

false)}

}return

true;}

intmain()

//m[i] = p[i];

}while(pd

()==false)if

(k !=0)

t[0]++

;int w =0;

while

(t[w]

>=10)

}bool kpl =

true;t[

0]++;

int w =0;

while

(t[w]

>=10)

for(

int w =

1004

; w >=

0; w--)if

(kpl ==

false)}

cout <<

" "<< n;

return0;

}

導致錯誤原因:這份**就是單純的模擬計算過程,導致執行速度很慢,得不到全部的分數。需要進行優化,或者重構**。

正確示例:

#include

using

namespace std;

intmain()

while(1

) s = s *10+

1;n++;}

cout <<

" "<< n;

return0;

}

思路:直接輸出商,不進行陣列儲存商的操作。

商運算技巧:

while(1

) s = s *10+

1;n++

;}

天梯賽 連續因子

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者陳越乙個正整數n的因子中可能存在若干連續的數字。例如630可以分解為3 5 6 7,其中5 6 7就是3個連續的數字。給定任一正整數n,要求編寫程式求出最長連續因子的個數,並輸出最小的連續因...

天梯賽 連續因子

乙個正整數n的因子中可能存在若干連續的數字。例如630可以分解為3 5 6 7,其中5 6 7就是3個連續的數字。給定任一正整數n,要求編寫程式求出最長連續因子的個數,並輸出最小的連續因子序列。輸入格式 輸入在一行中給出乙個正整數n 1解 用乙個for迴圈列舉滿足連乘的最小因子起點 star 另乙個...

天梯賽 L1 046 整除光棍 20分

這裡所謂的 光棍 並不是指單身汪啦 說的是全部由1組成的數字,比如1 11 111 1111等。傳說任何乙個光棍都能被乙個不以5結尾的奇數整除。比如,111111就可以被13整除。現在,你的程式要讀入乙個整數x,這個整數一定是奇數並且不以5結尾。然後,經過計算,輸出兩個數字 第乙個數字s,表示x乘以...