제출 #1220455

#제출 시각아이디문제언어결과실행 시간메모리
1220455TrumlingCubeword (CEOI19_cubeword)C++20
0 / 100
435 ms8668 KiB
//Trumling © //Αφόδευε υψηλά και ηγνάντει #include <bits/stdc++.h> using namespace std; typedef long long ll; #define pb push_back #define F first #define S second #define enter cout<<'\n'; #define INF 99999999999999999 #define MOD 998244353 #define all(x) x.begin(),x.end() #define out(x) for(auto y:x)cout<<y;enter int main() { ios_base::sync_with_stdio(0); cin.tie(0); ll n; cin>>n; vector<vector<vector<ll>>>arr(11,vector<vector<ll>>(26,vector<ll>(26,0))); set<ll>se; for(int i=0;i<n;i++) { string s; cin>>s; ll curr=0; for(int i=0;i<s.size();i++) { curr*=26; curr+=(s[i]-'a'); } if(se.find(curr)==se.end()) { arr[s.size()][s[0]-'a'][s[s.size()-1]-'a']++; se.insert(curr); } for(int i=0;i<s.size()/2;i++) swap(s[i],s[s.size()-1-i]); curr=0; for(int i=0;i<s.size();i++) { curr*=26; curr+=(s[i]-'a'); } if(se.find(curr)==se.end()) { arr[s.size()][s[0]-'a'][s[s.size()-1]-'a']++; se.insert(curr); } } ll ans=0; for(int c=3;c<=10;c++) for(int i=0;i<20;i++) for(int j=0;j<20;j++) for(int ii=0;ii<20;ii++) for(int jj=0;jj<20;jj++) { ll ans1=0,ans2=0,ans3=0,ans4=0; for(int r=0;r<20;r++) { ans1+=(((arr[c][i][r]*arr[c][j][r])%MOD)*arr[c][jj][r])%MOD; ans1%=MOD; } for(int r=0;r<20;r++) { ans2+=(((arr[c][i][r]*arr[c][j][r])%MOD)*arr[c][ii][r])%MOD; ans2%=MOD; } for(int r=0;r<20;r++) { ans3+=(((arr[c][i][r]*arr[c][ii][r])%MOD)*arr[c][jj][r])%MOD; ans3%=MOD; } for(int r=0;r<20;r++) { ans4+=(((arr[c][j][r]*arr[c][jj][r])%MOD)*arr[c][ii][r])%MOD; ans4%=MOD; } ans+=(((ans1*ans2)%MOD)*((ans3*ans4)%MOD))%MOD; ans%=MOD; } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...