Cogs 604 方程(排列組合 高精度)

2022-02-13 04:39:21 字數 1676 閱讀 5286

方程

★☆ 輸入檔案:equationz.in 輸出檔案:equationz.out 簡單對比

時間限制:1 s 記憶體限制:128 mb

【題目描述】

hyc 碰到了乙個難題,請你來幫忙解決。

對於不定方程a1+a2+a3+……+ak=g(x) ,其中k.>=2,k是正整數 , x 是正整數

g(x)=x^x mod 1000 , x,k 是給定的數 . 我們要求的是這個不定方程的正整數解組數 .

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

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

【輸入檔案】

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

【輸出檔案】

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

【樣例輸入】

3 2

【樣例輸出】

3 【資料範圍】

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

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

/*

求不定方程正整數解的個數.

隔板法求得ans=c(m-1,n-1) (m=pow(x,x)%1000).

然後是噁心的高精度.....

*/#include

#include

#include

#define ll long long

#define mod 1000

#define maxn 1001

using

namespace

std;

int n,x,m,f[maxn][maxn*10],tmp1[maxn],a[maxn*10],tmp[maxn*10],tmpc[maxn*10],tot;

int read()

while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();

return x*f;

}ll mi(ll a,ll b)

return total;

}void slove1(int x)

void add(int c,int a,int b)

c[i+b[0]]=x;

}if(c[c[0]+1]) c[0]++;

while(!c[c[0]]&&c[0]>1) c[0]--;return ;

}bool cmp(int a,int b)

return

true;

}void jian(int a,int b)

while(!a[a[0]]&&a[0]>1) a[0]--;

return ;

}void chu(int c,int a,int b)

while(!c[c[0]]&&c[0]>1) c[0]--;

return;

}void slove()

for(int i=f[n][0];i>=1;i--) printf("%d",f[n][i]);

}int main()

2 9 5 方程也是類

問題及 include using namespace std class cequation cequation cequation double aa,double bb istream operator istream in,cequation e ostream operator ostre...

1436 方程的解數

這道題的方法很簡單,關鍵在於這道題有很多角度都能切入思考,能不能快速想到合適的解法。方法步驟 將k化為二進位制,則對應bit位置若為0,則a1,a2,an相應的bit位設為b1,b2,bn。相鄰2個bi不能同時為1。考慮這樣情況的總數。既然不能出現連續的1。設方法總數為f n bn為1時,b n 1...

t050 方程求解

time limit 1 second memory limit 128 mb 問題描述 要求xi i 1,2,3,4 是乙個 t.t 中的整數,滿足方程ax1 bx2 cx3 dx4 p的解有多少組?輸入格式 六個整數分別表示p t a b c d。輸出格式 乙個整數表示方程的解的個數。p 109...