* 乙個數字被稱為好數字當他滿足下列條件:
* 它有 2∗n個數字,n 是正整數(允許有前導 0)。
* 構成它的每個數字都在給定的數字集合 s中。
* 它前 n位之和與後 n 位之和相等或者它奇數字之和與偶數字之和相等。
第一行乙個數 n。接下來乙個長度不超過 10的字串,表示給定的數字集合(不存在重複的數字)。
一行,乙個整數表示合法的好數字的個數 mod 999983。
2
0987654321
1240
#include#define int long long
using namespace std;
const int maxn=1e3+5,mod=999983;
int dp[maxn][9*maxn];
int n,a[11];
signed main()
dp[0][0]=1;
for(int i=1;i<=n;i++)
}} }
int ans=0;
for(int i=0;i<=9*n;i++)
int len1=(n+1)/2,len2=n/2;
int ans1=0,ans2=0;
for(int i=0;i<=9*len1;i++)
for(int i=0;i<=9*len2;i++)
ans=(ans-ans1*ans2%mod+mod)%mod;
printf("%lld\n",ans);
}
count 數字計數 (數字dp)
給定兩個正整數a和b,求在 a,b 中的所有整數中,每個數碼 digit 各出現了多少次。input 輸入檔案中僅包含一行兩個整數a b,含義如上所述。output 輸出檔案中包含一行10個整數,分別表示0 9在 a,b 中出現了多少次。sample input 1 99 sample output...
計數問題(數字dp)
給定兩個整數 a 和 b,求 a 和 b 之間的所有數字中0 9的出現次數。例如,a 1024,b 1032,則 a 和 b 之間共有9個數如下 1024 1025 1026 1027 1028 1029 1030 1031 1032 其中 0 出現10次,1 出現10次,2 出現7次,3 出現3次...
數字DP 計數問題
題目鏈結 第一次做真的很難,總之十分耗費時間。include include include using namespace std const int n 10 get前面字首部分的數值,即前面字首總方案數 intget vector int num,int l,int r 字尾有幾位就是十的幾次...