全部评论
讨论下,是不是这样的,我最后没提交上去
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int count_route(int M, bool equal) {
vector<int> dp(M + 1);
dp[0] = 1;
int cur = 1;
int f = 0;
for (int i = 1; i <= M; i++) {
cur *= 2;
dp[i] = f;
f = cur - dp[i];
}
if (equal) return dp[M];
else return (cur - dp[M])/2;
}
int main() {
int N, M, K;
cin >> N >> M >> K;
string str_src;
string str_des;
cin >> str_src;
cin >> str_des;
long long res = 1;
for (int i = 0; i<N; i++) {
char c_src = str_src[i];
char c_des = str_des[i];
int temp = count_route(M, c_src == c_des);
if (temp == 0) {
cout << 0 << endl;
return 0;
}
else res *= temp;
}
cout << res % 1000000007 << endl;
return 0;
}
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享