LOJ6303 水題 題解

2022-05-16 12:41:35 字數 814 閱讀 3029

題目來自loj。

就記乙個公式,設f(n,k)為n!裡分解得到的k(k為質數)的個數,則f(n,k)=f(n/k,k)+n/k。

證明很好證,顯然我們要的只有k,k^2,k^3……這樣的數有n/k個,然後往下遞迴即可。

至於k為合數,就質因數分解做就行。

k的質因子最多o(logk)個,遞迴顯然是o(logn)的,因此複雜度為o(logklogn),可以線性篩預處理素數通過。

#include#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;const

int n=4e6+5

;const ll inf=9e18;

ll calc(ll n,ll p)

bool

he[n];

inttot;

ll su[n];

void euler(int

n) }

}ll n,k;

intmain()

}if(k>1)x=min(x,calc(n,k));

printf(

"%lld\n

",x);

}return0;

}

+

LOJ 6303 水題 約數 質因數

給定正整數 n,kn,kn,k,已知非負整數 xx x 滿足 n modkx 0,求 xmaxx x max 本題包含多組資料,請處理至檔案末尾。對於每組資料,共有一行,兩個整數,表示 n,kn,kn,k。對於每組資料,輸出一行,乙個整數,表示 xmaxx x max 輸入樣例 10 2 50000...

LOJ6087 毒瘤題 題解

n 個數的陣列,其中恰好有 k 個數出現了奇數次。把他們找出來。n 3e6,k 2 空間 2m k 1 直接全部異或起來。k 2 假設出現奇數次的是 a 和 b,那麼把所有數異或起來得到的就是 s a b。對每個二進位制位維護乙個數 w i 當讀入乙個 x,x 的第 j 位為 1 的時候,就把 w ...

題解 牛客 114514 水題

給你乙個長為n的序列 定義乙個序列下標的子集為先輩,當且僅當選出的這些下標對應的序列值的乘積為114514,而且因為只有乙隻野獸,所以有個要求是選出來的這些下標所對應的序列值最多有乙個1 請輸出有多少先輩 第一行乙個數表示n 之後一行n個數表示這個序列 n 229028,序列的值域在 0,11451...