提交时间:2024-08-28 13:19:37

运行 ID: 31933

#include <bits/stdc++.h> #define int long long #define mod 998244353 using namespace std ; int n , w , fro[200005] , ans ; vector <int> loc[11] ; string s ; int pow ( int x , int y ){ int re = x ; y -= 1 ; while( y -- ){ re *= x ; re %= mod ; } return re ; } signed main(){ ans = 1 ; scanf("%d%d" , &n , &w ); cin >> s ; int ssize = s.size(); if( w == 2 ){ int aa ; for( int i = 0 ; i < ssize ; i ++ ){ aa = s[i] - '0' ; if( aa % 2 == 0 ){ loc[1].push_back(i+1); } } int len = loc[1].size() ; for( int xx = 1 ; xx <= n ; xx ++ ){ int xxx = (xx-1)*ssize %mod ; for( int i = 0 ; i < len ; i ++ ){ ans += pow( 2 , xxx + loc[1][i]-1); ans %= 998244353 ; } } ans = pow( ans , n ); cout << ans <<endl; } if( w == 5 ){ int aa ; for( int i = 0 ; i < ssize ; i ++ ){ aa = s[i] -'0' ; if( aa == 0 || aa == 5 ){ loc[1].push_back(i+1); } } int len = loc[1].size() ; for( int xx = 1 ; xx <= n ; xx ++ ){ int xxx = (xx-1)*ssize%mod ; for( int i = 0 ; i < len ; i ++ ){ ans += pow( 2 , xxx + loc[1][i]-1); ans %= 998244353 ; } } ans = pow ( ans , n ); cout << ans << endl; } return 0 ; }