題目描述
給乙個數字串s和正整數d , 統計s有多少種不同的排列能被d整除(可以有前導0)。
例如123434有90種排列能被2整除,其中末位為2 的有 30種,末位為4 的有60種。
輸入格式
輸入第一行是乙個整數t,表示測試資料的個數,以下每行一組 s和 d,中間用空格隔開。s保證只包含數字0,1,2,3,4,5,6,7,8,9.
輸出格式
每個資料僅一行,表示能被d整除的排列的個數。
樣例樣例輸入
7
000 1
001 1
1234567890 1
123434 2
1234 7
12345 17
12345678 29
樣例輸出
1
33628800903
61398
s的長度不超過10,1<=d<=1000,1<=t<=15;
#include using用stl庫中的全排列函式的解法(自帶判重加修改)namespace
std;
const
int maxn=1
<<10
;int d,len,dp[maxn<<1
][maxn],c[maxn],a[maxn];
char s[15
];int
main() }}
}printf(
"%d\n
",dp[maxn][0
]); }
return0;
}
next_permutation從遞增數列求出全排列組合(從小到大);
相反函式:prev_permutation(從大到小)
全排列講解:
然後運用函式暴力列舉全排列,計算個數;
#include using午歌:apologizenamespace
std;
inline
intread()
const
int maxn = 5200
;char
ch[maxn];
inta[maxn];
signed main()
sort(a + 1, a + 1 +len);
ans = 0
;
dowhile(next_permutation(a + 1, a + 1 +len));
cout
<< ans <
}return0;
}
狀壓DP之排列perm
scoi2007 排列 給乙個數字串s和正整數d,統計s有多少種不同的排列能被d整除 可以有前導0 例如123434有90種排列能被2整除,其中末位為2的有30種,末位為4的有60種。輸入第一行是乙個整數t,表示測試資料的個數,以下每行一組s和d,中間用空格隔開。s保證只包含數字0,1,2,3,4,...
狀壓DP 暴力搜尋 排列perm
給乙個數字串 s 和正整數 d,統計 sss 有多少種不同的排列能被 d 整除 可以有前導 0 例如 123434 有 90 種排列能被 2 整除,其中末位為 2 的有 30 種,末位為 4 的有 60 種。輸入第一行是乙個整數 ttt,表示測試資料的個數,以下每行一組 s 和 d,中間用空格隔開。...
狀壓dp 玉公尺田 狀壓dp
相關 強相關 327.玉公尺田 狀壓dp 小國王 狀壓dp 是井字形,本題是十字形。思路 狀態計算 時間複雜度 n 2 n 2n o n 22n 12 2 24n 2 n 2 n o n2 12 2 n 2n 2 n o n22n 12 224 看著妥妥超時,但是裡面合法狀態很少 依舊可以過 在此,...