VIJOS 1371 方程的解

2021-06-18 19:04:09 字數 1332 閱讀 4934

對於不定方程a1+a2+.....+ak-1+ak=g(x) ,其中k>=2 x是正整數,g(x)=x^x mod 1000 ,x,k是給定的數.我們要求的是這個不定方程的正整數解組數.

舉例來說,當k=3,x=2時,g(x)=4,原方程即a1+a2+a3=4. 

這個方程的正整數解有3組.分別為 =(2,1,1),(1,2,1),(1,1,2).

只有一行.為用空格隔開的兩個正整數,依次為k,x.

只有一行,為方程的正整數解組數.

3 2
3

各個測試點1s

對於40%的資料, ans<=10^16;

對於100%的資料, k<=100,x<=2^31-1,k<=g(x).

hyc一看範圍 x^x  x<=2^31-1 需要用到快速冪

機房的小夥伴寫搓了 我們都形象的稱他寫的為 龜速冪 偷笑ing

a1+a2+...+an=g(x)

採用隔板法。。 = =

相當於g(x)個果子排成一排

中間有g(x)-1個空

放入n-1個板子 將它們分成n份

那麼第i份對應的就是ai

有多少種放法呢?

c(n-1,g(x)-1)種

需要用到高精度乘除

只需要高精度加減

c(n,m)=c(n-1,m-1)+c(n,m-1)

#include#include#include#includeusing namespace std;

const int mod=1000;

int f[111][1111][35];

bool flag[111][1111];

int m,n,a,b;

int z[55];

void print(int s[35])

}void c(int n,int m,int s[35])//c(n,m)

if(n==0||n==m)

if(n==1||n==m-1)

flag[n][m]=1;

c(n-1,m-1,f[n][m]);

c(n,m-1,f[n][m]);

for(int a=1;a<=30;a++)s[a]+=f[n][m][a];

jinwei(s);

}int quick(int i)

return ret;

}int main()

c(n-1,mm-1,z);

print(z);

return 0;

}

luogu1771 方程的解

對於不定方程a1 a2 ak 1 ak g x 其中k 2且k n,x是正整數,g x x x mod 1000 即x x除以1000的餘數 x,k是給定的數。我們要求的是這個不定方程的正整數解組數。定義f p,rest 為第p個數,p及p後面的數的和為rest的解的數量,遞迴式為 f p,rest...

onecode題庫10202 方程的解

10202 方程的解 時間限制 1000 ms 記憶體限制 131072 kb 提交總數 49 ac總數 13 問題描述 這是一道簡單的數學題,有這樣乙個方程 x 3 5x 2 10x 80 y,告訴你y的值,你能求出根x1的值麼?輸入格式 輸入乙個整數y,y的取值範圍在 80,80 輸出格式 輸出...

洛谷 P1771 方程的解

這道題是組合數的知識,就是讓我們求k個正整數加起來等於xx 1000的方案有多少種 由於我們是要找正整數,所以肯定不會有0,所以就把xx 1000用隔板法分成k份,這樣得到就是c k 1,xx 1000 1 因為這個數範圍比較大,所以我們需要高精度處理 ac 如下 include using nam...