連續因子原題**:
#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乘以...