時間限制:c/c++ 1秒,其他語言2秒
空間限制:c/c++ 262144k,其他語言524288k
64bit io format: %lld
t次詢問,每次給你乙個數n,求在[1,n]內約數個數最多的數的約數個數
第一行乙個正整數t之後t行,每行乙個正整數n
輸出t行,每行乙個整數,表示答案分析:1)約數個數定理:
對於乙個大於1的正整數n可以分解質因數:
則n的正約數個數是:
p1,p2,p3……是質數
2)對於12=2^2*3,18=2*3^2,可見約數個數相同的數,質數的指數大的約靠前,我們越能得到較小的數,所以給指數乙個上限,(根據題目2^q不超過最大n值即可),讓下乙個素數的指數小於這個素數的指數。
3)**中的num表示1-n中約數最多的數。
if(t>maxn||(t==maxn&&mt表示當前數的約數個數,maxn表示最大的約數個數,m表示的是當前的數,可見,當t>max時或等於且m**如下:
#include#include#define ll long long
using namespace std;
int a[20]=;
ll n,num,maxn;//maxn表示1-n內最大的約數個數,num表示最大約數的數
void dfs(ll m,ll f,ll t,ll pr)
ll z=1,yg,now=m;//z當前素數的指數,yg約數個數,now記錄當前值的變化
while(z<=pr)
yg=t*z;//約數的個數=當前約數的個數*素數的指數加1(z每次都先+1了)
now=now*a[f];
dfs(now,f+1,yg,z-1);//下乙個素數的指數要小於這個素數的指數所以z-1
}}int main()
}
牛客練習賽14 A n的約數
n的約數 時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld t次詢問,每次給你乙個數n,求在 1,n 內約數個數最多的數的約數個數 第一行乙個正整數t 之後t行,每行乙個正整數n輸出t行,每行乙個整數,表示答案 根...
牛客網練習賽14 n的約數
題目 t次詢問,每次給你乙個數n,求在 1,n 內約數個數最多的數的約數個數 1 n 1000000000000000000 18個0 參考了大佬的 自己理解的,還有一部分還沒有搞明白 首先,每乙個正整數都能通過互不相同的素數的次方的積得出,下面是一條公式 設n p1 k1 p2 k2 pn kn,...
牛客練習賽9
時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 珂朵莉想每天都給威廉送禮物,於是她準備了n個自己的本子 她想送最多的天數,使得每天至少送乙個本子,但是相鄰兩天送的本子個數不能相同 珂朵莉最多送幾天禮物呢 第一行乙個整...