對於不定方程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...