LOADING

加载过慢请开启缓存,浏览器默认开启

daily 2

2023/8/8 daily

CF 1202D

void solve() {
  int n;
  cin >> n;
  int lim = sqrt(2 * n);
  int three = 0, seven = 0;
  for (int i = lim; i <= 2 * n; ++i) {
    if (i * (i - 1) <= 2 * n) {
      three = i;
      seven = n - (i * (i - 1) / 2);
    } else {
      break;
    }
  }
  cout << "133"; // using 3 and 7 one by one in order to make the number controlled C(three, 2) + seven  == n
  for (int i = 0; i < seven; ++i) {
    cout << "7";
  }
  for (int i = 0; i < three - 2; ++i) {
    cout << "3";
  }
  cout << "7";
  cout << "\n";
  return;
}

CF 1200E

void solve() {
  int n;
  cin >> n;
  string ans;
  cin >> ans;
  string sc;
  function<void(string)> get_next = [&](string s) {
    int len = s.size();
    s = ')' + s;
    int j = 0;
    nxt[0] = nxt[1] = 0;
    for (int i = 2; i <= len; ++i) {
      while (j && s[j + 1] != s[i]) {
        j = nxt[j];
      }
      if (s[i] == s[j + 1]) {
        ++j;
      }
      nxt[i] = j;
    }
  };
  for (int i = 2; i <= n; ++i) {
    cin >> sc;
    int len = min(sc.size(), ans.size());
    string cur = sc + "!@#$%^&*()WETUIOPPLKJHGFDDSSSDVBNMM<KJJHGFD" +
                 ans.substr(ans.size() - len, len);
    get_next(cur);
    for (int j = nxt[cur.size()]; j < sc.size(); ++j) {
      ans += sc[j];
    }
  }
  cout << ans << '\n';
  return;
}