제출 #543249

#제출 시각아이디문제언어결과실행 시간메모리
543249OlympiaPalindromic Partitions (CEOI17_palindromic)C++17
100 / 100
385 ms12196 KiB
#include <vector> #include <iostream> #include <cassert> #include <cmath> #include <set> #include <map> #include <stack> #include <queue> #include <set> #include <algorithm> #include <iomanip> #define ll long long using namespace std; const int MOD = 1e9 + 7; ll binPow (ll x, ll y) { ll ans = 1; ll res = x; while (y > 0) { if (y & 1) { ans *= res; ans %= MOD; } res *= res; res %= MOD; y >>= 1; } return ans; } void solve() { string s; cin >> s; ll l = 0; ll r = 0; ll len = 0; int cnt = 0; for (int i = 0; i < s.length()/2; i++) { l += (binPow(10, len) * (s[i] - 'a')) % MOD; r = ((10 * r) % MOD + (s[s.length() - i -1 ] - 'a')) % MOD; l %= MOD, r %= MOD; len++; if (l == r) { cnt += 2; l = r = len = 0; } else if (s.length() % 2 == 0 && i == s.length()/2 - 1) { cnt++; } } if (s.length() % 2 == 1) { cnt++; } cout << cnt << endl; } int main() { int t; cin >> t; while(t--) { solve(); } }

컴파일 시 표준 에러 (stderr) 메시지

palindromic.cpp: In function 'void solve()':
palindromic.cpp:36:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |     for (int i = 0; i < s.length()/2; i++) {
      |                     ~~^~~~~~~~~~~~~~
palindromic.cpp:44:45: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |         } else if (s.length() % 2 == 0 && i == s.length()/2 - 1) {
      |                                           ~~^~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...