Submission #50473785


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i,a,n) for (ll i=a;i<(ll)(n);i++)
ll read(){ll r;scanf("%lld",&r);return r;}
const int N=500000;
char s[N+10];
vector<int> ch[N+10];
int subcycle(const string&t){
  int sz=t.size();
  for(auto i:ch[sz]) {
    assert(i < sz and sz%i == 0);
    bool cycle = true;
    rep(j,0,sz) if(t[j] != t[j%i]) {cycle = false;};
    if(cycle) return i;
  }
  return t.size();
}
template<class T>
T reverse(const T &a){
  int sz=size(a);
  T ret;
  rep(i,0,sz) ret.push_back(a[sz-1-i]);
  return ret;
}

vector<bool> cut(const string&t){ // [sz-1] = 是否 最小循环长度==长度
  int sz=t.size();
  assert(sz>=2);
  vector<int> cyc(sz,0); // cyc[长度]=最小循环节
  iota(begin(cyc),end(cyc),1);
  rep(i,1,sz) {
    for(int l:ch[i+1]) {
      if(l == cyc[i-l]){// 需要 l % cyc[i-l], 但是如果 cyc[i-l] 更小且 下面相等,那么应该有更小的周期
        bool ok = true;
        rep(j,0,l) if(t[j] != t[i+1-l+j]) {
          ok = false;
          break;
        }
        if(ok) {
          cyc[i]=l;
          break;
        }
      }
    }
  }
  vector<bool> ret(sz,0); // ret[长度]=最小循环节
  rep(i,0,sz) ret[i] = cyc[i]==i+1;
  return ret;
}

int main(){
  rep(i,1,N+1) rep(j,2,N+1) {
    if(i*j > N) break;
    ch[i*j].push_back(i);
  }
  scanf("%s",s);
  int sz = strlen(s);
  if(sz == 1) {
    printf("1\n1\n");
    return 0;
  }
  string s0;
  rep(i,0,sz) s0.push_back(s[i]);
  int i = subcycle(s0);
  if(i == sz) {
    printf("1\n1\n");
  }else if(i == 1) {
    printf("%d\n1\n",sz);
  }else{
    if(sz/i > 2) {
      int ways = (sz/i-2)*(i-1); // 中间的非两段
      for(auto w:cut(s0.substr(0,i))) ways+=w;
      for(auto w:cut(reverse(s0.substr(sz-i,i)))) ways+=w;
      printf("2\n%d\n",ways-2); // 刚好等于的时候
    }else{
      int ways = 0; // 只能切成2段
      auto w0 = cut(s0);
      auto w1 = reverse(cut(reverse(s0)));
      rep(i,0,sz-1) ways += w0[i] and w1[i+1];
      printf("2\n%d\n",ways);
    }
  }
  return 0;
}

Submission Info

Submission Time
Task F - Best Representation
User cromarmot
Language C++ 20 (gcc 12.2)
Score 900
Code Size 2060 Byte
Status AC
Exec Time 330 ms
Memory 63280 KiB

Compile Error

Main.cpp: In function ‘ll read()’:
Main.cpp:5:21: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    5 | ll read(){ll r;scanf("%lld",&r);return r;}
      |                ~~~~~^~~~~~~~~~~
Main.cpp: In function ‘int main()’:
Main.cpp:57:8: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   57 |   scanf("%s",s);
      |   ~~~~~^~~~~~~~

Judge Result

Set Name Sample Subtask1 All
Score / Max Score 0 / 0 400 / 400 500 / 500
Status
AC × 3
AC × 36
AC × 65
Set Name Test Cases
Sample example_01.txt, example_02.txt, example_03.txt
Subtask1 example_01.txt, example_02.txt, example_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_26.txt, subtask1_27.txt, subtask1_28.txt, subtask1_29.txt, subtask1_30.txt, subtask1_31.txt, subtask1_32.txt, subtask1_33.txt
All example_01.txt, example_02.txt, example_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_26.txt, subtask1_27.txt, subtask1_28.txt, subtask1_29.txt, subtask1_30.txt, subtask1_31.txt, subtask1_32.txt, subtask1_33.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt, subtask2_26.txt, subtask2_27.txt, subtask2_28.txt, subtask2_29.txt
Case Name Status Exec Time Memory
example_01.txt AC 209 ms 59344 KiB
example_02.txt AC 193 ms 59184 KiB
example_03.txt AC 225 ms 59364 KiB
subtask1_01.txt AC 205 ms 59376 KiB
subtask1_02.txt AC 208 ms 59148 KiB
subtask1_03.txt AC 206 ms 59372 KiB
subtask1_04.txt AC 216 ms 59204 KiB
subtask1_05.txt AC 216 ms 59204 KiB
subtask1_06.txt AC 206 ms 59176 KiB
subtask1_07.txt AC 216 ms 59240 KiB
subtask1_08.txt AC 226 ms 59256 KiB
subtask1_09.txt AC 200 ms 59172 KiB
subtask1_10.txt AC 198 ms 59292 KiB
subtask1_11.txt AC 202 ms 59236 KiB
subtask1_12.txt AC 220 ms 59192 KiB
subtask1_13.txt AC 199 ms 59416 KiB
subtask1_14.txt AC 218 ms 59196 KiB
subtask1_15.txt AC 209 ms 59144 KiB
subtask1_16.txt AC 218 ms 59144 KiB
subtask1_17.txt AC 205 ms 59164 KiB
subtask1_18.txt AC 200 ms 59184 KiB
subtask1_19.txt AC 213 ms 59344 KiB
subtask1_20.txt AC 208 ms 59160 KiB
subtask1_21.txt AC 211 ms 59200 KiB
subtask1_22.txt AC 211 ms 59288 KiB
subtask1_23.txt AC 201 ms 59180 KiB
subtask1_24.txt AC 212 ms 59180 KiB
subtask1_25.txt AC 205 ms 59212 KiB
subtask1_26.txt AC 209 ms 59376 KiB
subtask1_27.txt AC 202 ms 59264 KiB
subtask1_28.txt AC 221 ms 59392 KiB
subtask1_29.txt AC 212 ms 59356 KiB
subtask1_30.txt AC 202 ms 59180 KiB
subtask1_31.txt AC 221 ms 59348 KiB
subtask1_32.txt AC 218 ms 59204 KiB
subtask1_33.txt AC 209 ms 59208 KiB
subtask2_01.txt AC 268 ms 62276 KiB
subtask2_02.txt AC 211 ms 60284 KiB
subtask2_03.txt AC 203 ms 60280 KiB
subtask2_04.txt AC 220 ms 60212 KiB
subtask2_05.txt AC 214 ms 60332 KiB
subtask2_06.txt AC 279 ms 60256 KiB
subtask2_07.txt AC 262 ms 60284 KiB
subtask2_08.txt AC 273 ms 60268 KiB
subtask2_09.txt AC 330 ms 63128 KiB
subtask2_10.txt AC 318 ms 63112 KiB
subtask2_11.txt AC 322 ms 63280 KiB
subtask2_12.txt AC 321 ms 63076 KiB
subtask2_13.txt AC 208 ms 60264 KiB
subtask2_14.txt AC 240 ms 60228 KiB
subtask2_15.txt AC 211 ms 60232 KiB
subtask2_16.txt AC 212 ms 60208 KiB
subtask2_17.txt AC 223 ms 60280 KiB
subtask2_18.txt AC 216 ms 60336 KiB
subtask2_19.txt AC 300 ms 63224 KiB
subtask2_20.txt AC 314 ms 63156 KiB
subtask2_21.txt AC 248 ms 60248 KiB
subtask2_22.txt AC 211 ms 60188 KiB
subtask2_23.txt AC 232 ms 60396 KiB
subtask2_24.txt AC 216 ms 59808 KiB
subtask2_25.txt AC 232 ms 59908 KiB
subtask2_26.txt AC 273 ms 60036 KiB
subtask2_27.txt AC 255 ms 59892 KiB
subtask2_28.txt AC 215 ms 59616 KiB
subtask2_29.txt AC 287 ms 62196 KiB