Submission #22581

#TimeUsernameProblemLanguageResultExecution timeMemory
22581past future present (#40)Joyful KMP (KRIII5_JK)C++14
0 / 7
0 ms10880 KiB
#include<stdio.h> #include<string.h> using ll = long long; const int mod = 1e9 + 7; char s[1000005], ans[1000005]; int n, ff[1000005]; void calculate_pi() { ff[0] = -1; for (int i = 1, j = -1; i < n; i++) { while (j >= 0 && s[i] != s[j + 1]) j = ff[j]; if (s[i] == s[j + 1]) ff[i] = ++j; else ff[i] = -1; } } int pt[1000005], psz; int main() { ll k; scanf("%s%lld", s,&k); n = strlen(s); calculate_pi(); int num = 26; for (int i = 1; i < n; i++) if (ff[i] == -1) { num = (num * 25LL) % mod; pt[++psz] = i; } printf("%d\n", num); k--; for (int j = psz; j >= 0; j--) { ans[pt[j]] = 'a' + k % 25; k /= 25; } if (k > 0) { puts("OVER"); return 0; } for (int i = 1; i < n; i++) { if (ans[i]) { if (ans[i] >= ans[0]) ans[i]++; continue; } ans[i] = ans[ff[i]]; } puts(ans); }

Compilation message (stderr)

JK.cpp: In function 'int main()':
JK.cpp:26:23: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s%lld", s,&k);
                       ^
#Verdict Execution timeMemoryGrader output
Fetching results...