提出 #50471607


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
#define rep(i,a,n) for (ll i=a;i<(ll)(n);i++)
#define per(i,a,n) for (ll i=n;i-->(ll)(a);)

ll read(){ll r;scanf("%lld",&r);return r;}
const int N=500000;
char s[N+10];
vector<int> ch[N+10];
int cut(const vector<char>&t){
  // for(auto c:t) printf("%c",c);
  // printf("\n");
  int sz=t.size();
  assert(sz>=2);
  vector<int> cyc(sz,0); // cyc[长度]=最小循环节
  iota(begin(cyc),end(cyc),1);
  int ret = 1;
  rep(i,1,sz-1) {
    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;
        }
      }
    }
    ret += 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;
  }
  for(auto i:ch[sz]) {
    bool cycle = true;
    rep(j,0,sz) if(s[j] != s[j%i]) {cycle = false;};
    if(cycle) {
      if(i == 1) {
        printf("%d\n1\n",sz);
      }else{
        ll ways = 0;
        if(sz/i > 2) {
          ways += (sz/i-2)*(i-1); // 中间的非两段
        }else{
          ways += 1; // 只能切成2段
        }
        vector<char> t;
        rep(j,0,i) t.push_back(s[j]);
        ways += cut(t);
        t={};
        rep(j,0,i) t.push_back(s[sz-1-j]);
        ways += cut(t);
        printf("2\n%lld\n",ways);
      }
      return 0;
    }
  }
  printf("1\n1\n");
  return 0;
}

提出情報

提出日時
問題 F - 最良表現
ユーザ cromarmot
言語 C++ 20 (gcc 12.2)
得点 0
コード長 1694 Byte
結果 WA
実行時間 378 ms
メモリ 60804 KiB

コンパイルエラー

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

ジャッジ結果

セット名 Sample Subtask1 All
得点 / 配点 0 / 0 0 / 400 0 / 500
結果
AC × 3
AC × 35
WA × 1
AC × 63
WA × 2
セット名 テストケース
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
ケース名 結果 実行時間 メモリ
example_01.txt AC 265 ms 59224 KiB
example_02.txt AC 261 ms 59296 KiB
example_03.txt AC 272 ms 59116 KiB
subtask1_01.txt AC 266 ms 59112 KiB
subtask1_02.txt AC 255 ms 59344 KiB
subtask1_03.txt WA 263 ms 59076 KiB
subtask1_04.txt AC 280 ms 59124 KiB
subtask1_05.txt AC 284 ms 59160 KiB
subtask1_06.txt AC 300 ms 59224 KiB
subtask1_07.txt AC 290 ms 59112 KiB
subtask1_08.txt AC 289 ms 59172 KiB
subtask1_09.txt AC 296 ms 59008 KiB
subtask1_10.txt AC 323 ms 59128 KiB
subtask1_11.txt AC 280 ms 59184 KiB
subtask1_12.txt AC 294 ms 59124 KiB
subtask1_13.txt AC 298 ms 59292 KiB
subtask1_14.txt AC 292 ms 59132 KiB
subtask1_15.txt AC 275 ms 59164 KiB
subtask1_16.txt AC 272 ms 59116 KiB
subtask1_17.txt AC 276 ms 59076 KiB
subtask1_18.txt AC 247 ms 59108 KiB
subtask1_19.txt AC 249 ms 59248 KiB
subtask1_20.txt AC 256 ms 59120 KiB
subtask1_21.txt AC 266 ms 59280 KiB
subtask1_22.txt AC 238 ms 59128 KiB
subtask1_23.txt AC 253 ms 59216 KiB
subtask1_24.txt AC 267 ms 59112 KiB
subtask1_25.txt AC 268 ms 59188 KiB
subtask1_26.txt AC 255 ms 59188 KiB
subtask1_27.txt AC 250 ms 59292 KiB
subtask1_28.txt AC 236 ms 59300 KiB
subtask1_29.txt AC 239 ms 59132 KiB
subtask1_30.txt AC 243 ms 59192 KiB
subtask1_31.txt AC 272 ms 59248 KiB
subtask1_32.txt AC 260 ms 59124 KiB
subtask1_33.txt AC 235 ms 59312 KiB
subtask2_01.txt WA 302 ms 60444 KiB
subtask2_02.txt AC 253 ms 59784 KiB
subtask2_03.txt AC 251 ms 59716 KiB
subtask2_04.txt AC 240 ms 59568 KiB
subtask2_05.txt AC 244 ms 59604 KiB
subtask2_06.txt AC 286 ms 59648 KiB
subtask2_07.txt AC 296 ms 59644 KiB
subtask2_08.txt AC 292 ms 59604 KiB
subtask2_09.txt AC 327 ms 60580 KiB
subtask2_10.txt AC 333 ms 60760 KiB
subtask2_11.txt AC 324 ms 60804 KiB
subtask2_12.txt AC 320 ms 60632 KiB
subtask2_13.txt AC 257 ms 59604 KiB
subtask2_14.txt AC 247 ms 59700 KiB
subtask2_15.txt AC 293 ms 59788 KiB
subtask2_16.txt AC 305 ms 59592 KiB
subtask2_17.txt AC 261 ms 59648 KiB
subtask2_18.txt AC 253 ms 59720 KiB
subtask2_19.txt AC 351 ms 60640 KiB
subtask2_20.txt AC 378 ms 60748 KiB
subtask2_21.txt AC 318 ms 59696 KiB
subtask2_22.txt AC 318 ms 59776 KiB
subtask2_23.txt AC 286 ms 59676 KiB
subtask2_24.txt AC 305 ms 59496 KiB
subtask2_25.txt AC 309 ms 59548 KiB
subtask2_26.txt AC 331 ms 59544 KiB
subtask2_27.txt AC 331 ms 59576 KiB
subtask2_28.txt AC 303 ms 59320 KiB
subtask2_29.txt AC 349 ms 60328 KiB