제출 #1303009

#제출 시각아이디문제언어결과실행 시간메모리
1303009Faisal_SaqibCubeword (CEOI19_cubeword)C++20
21 / 100
864 ms100100 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define int long long const int N=100,mod=998244353; vector<int> ma[N],pth; char val[N]; set<string> cnt[20][300][300]; void dfs(int x) { pth.push_back(x); for(auto y:pth)cout<<y<<' '; cout<<endl; for(auto y:ma[x]) { dfs(y); } pth.pop_back(); } bool gonxt() { val[0]='a'; val[8]++; for(int i=8;i>=1;i--) { if(val[i]>'f') { val[i]='a'; val[i-1]++; } } if(val[0]=='b') { return 0; } return 1; } ll count(int len) { ll ans=1; for(int i=1;i<=8;i++) { for(auto j:ma[i]) { ans*=((ll)(cnt[len][val[i]][val[j]].size()))%mod; ans=(ans%mod); } } return ans; } int32_t main() { ma[1].push_back(2); // 1 2 ma[1].push_back(3);// 1 3 ma[1].push_back(5);// 1 5 ma[2].push_back(4);// 2 4 ma[2].push_back(6);// 2 6 ma[3].push_back(4); // 3 4 ma[3].push_back(7);// 3 7 ma[4].push_back(8);// 4 8 ma[5].push_back(6); // 5 6 ma[5].push_back(7); // 5 7 ma[6].push_back(8); // 6 8 ma[7].push_back(8); // 7 8 // dfs(1); int n; cin>>n; for(int i=0;i<n;i++) { string s; cin>>s; int len=s.size(); string t=s; reverse(begin(t),end(t)); cnt[len][s[0]][s.back()].insert(s); if(t==s)continue; cnt[len][s.back()][s[0]].insert(t); } ll sm=0; for(int len=3;len<=10;len++) { for(int x=1;x<=8;x++) { val[x]='a'; } do { sm+=count(len)%mod; sm%=mod; }while(gonxt()); } cout<<sm<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...