數論三題 簡單題 比賽排名 質因數

2022-05-12 04:56:52 字數 1607 閱讀 8226

這三個題思路都不複雜,就放在一起

計算

由於最終結果可能超過int的範圍,因此請將運算結果對1000000007取模。

乙個整數t(t <= 200000),表示資料組數。每行兩個整數m, n。(0 < m <= n <= 2000)

就是求組合數啊 c(n,m)

想一想一層套一層的迴圈,每一次都要從前乙個數+1開始,不是等價於前乙個迴圈中,有乙個數被選擇了,還剩下的數從+1開始,相當於在這一層迴圈裡去挑乙個出來啊。

#includeusing

namespace

std;

#define n 2020

#define ll long long

#define mod 1000000007ll t,n,m;

ll c[n][n];

intmain()

scanf(

"%lld

",&t);

while(t--)

return0;

}

n個同學參加比賽,問有多少種排名情況,允許出現並列的情況(n<=12)

這個題老師放了水,原題n<=200,但是思路是一樣的

考慮誰當第一,比如對於n=4是,可以在四個中選乙個當第一,也可以選兩個,選三個,選四個

所以有ans[4]=c(4,1)*ans[3]+c(4,2)*ans[2]+c(4,3)*ans[1]+c(4,4)*ans[0]

所以n可以類似的去算,可以得到這樣的乙個計算方式

#includeusing

namespace

std;

#define n 20

#define ll long longll n,a[n],c[n][n];

ll dfs(ll x)

intmain()

cout

<

}

otosakayuu最近為了nao tomori拯救世界而立了乙個flag,於是他想了一道數學題。有乙個正整數數列a1,a2…an。定義函式f(x)為x的不同的質因數數量。求f(a1),f(a2)…f(an)。

第一行包含乙個正整數,表示n。接下來n行,每行包含乙個正整數ai。1<=n<=1000000,2<=ai<=1000000

對於乙個被prime[j]篩出來的數,考慮和prime[j]相乘的i是否能整除prime[j],如果可以,證明i*prime[j]已經有prime[j]這個因數了,如果不可以,那它的質因數數目會在i的質因數數目的基礎上+1

#includeusing

namespace

std;

#define n 1000100

#define mx 1000010

#define ll long longll t,n,cnt,c,k,mm;

ll s[n],f[n],v[n],num[n],prime[n];

void primes(int

n)

for(int j=1;j<=cnt;j++)

}}int

main()

}

演算法刷題 數論 質數的判定 分解質因數 篩質數

質數 在大於1的整數中,如果只包含1和它本身這兩個約數,那麼這個數就稱為質數。判斷質數最暴力的寫法,按照質數的定義 看是否有其他的因子。最樸素的暴力的時間複雜度o n 時間複雜度o n bool isprime int n 質數的判定 試除法 優化 列舉到n sqrt n 因為因數都是成對出現的,如...

面試程式設計題 質因數統計

我們知道每乙個大於1的整數都一定是質數或者可以用質數的乘積來表示,如10 2乘5.現在請設計乙個程式,對於給定的乙個 1,n 之間的正整數 n取值不超過10萬 你需要統計 1,n 之間所有整數的質數分解後,所有質數個數的總個數。舉例,輸入資料為6,那麼滿足 1,6 的整數為2,3,4,5,6,各自進...

試除法分解質因數(附模板題)

void divide int x if x 1 cout x 1 endl cout endl 給定n個正整數ai,將每個數分解質因數,並按照質因數從小到大的順序輸出每個質因數的底數和指數。第一行包含整數n。接下來n行,每行包含乙個正整數ai。對於每個正整數ai,按照從小到大的順序輸出其分解質因數...