Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
31933 | baka24 | 【S】T1 | C++ | 解答错误 | 0 | 2013 MS | 2320 KB | 1585 | 2024-08-28 13:19:37 |
#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 ; }