Hướng dẫn giải của 2023F. Bức thư bí ẩn


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Tác giả: tranxuantruong

Gợi ý 1

Bạn có biết rằng bài này khi làm trong contest có giá trị là 1000 điểm và có 5/50 testcase trong đề bài trùng với bộ test của máy chấm không? Trong khi những bài khác có giá trị là 100 điểm thôi. Vậy nếu làm đúng 5 testcase bằng việc cào test là đã được nhiều điểm hơn người khác và có vị trí tốt hơn rồi. Bạn có cào được testcase nào không hay thấy khó quá thì bỏ qua? Cào 5 testcase bài này trong contest là được 100 điểm rồi nha.

Gợi ý 2

Để cào test thì đơn giản là ta chỉ cần copy input và output là được, rồi tiếp đó là dùng if else. Nếu input giống thì output ra cái này, khác thì output ra cái kia

Gợi ý 3

Không quên rằng trong c++ thì những kí tự như \" nếu viết trong một xâu kí tự thì trước đó phải đặt thêm một dấu \ vào trước đó. để không bị lỗi. (Hãy thử in ra 2 kí tự trên để biết kết quả)

Gợi ý 4

Trong những input trên có rất nhiều kí tự \ và kí tự ". Vì thế ta cũng có thể gõ dấu \ phía trước một cách thủ công, hoặc viết một chương trình c++ cơ bản là có thể tăng tính chính xác và tăng tốc độ.

Lời giải

Bài tập này có lời giải nhưng do tên bài tập là Bức thư bí ẩn nên để bảo mật nội dung của bức thư thì Trường tranxuantruong sẽ không viết lời giải cho bài tập này. Nhưng Trường đảm bảo rằng bài tập này có thể decode được và Accept được 50/50 testcase. Và nội dung bức thư cuối đề bài sau khi được giải mã sẽ là một đoạn văn bản Tiếng Việt không dấu, và nó có ý nghĩa.

Code

/**
  * Create: Sunday 2023-12-24-00.00.37 GMT+7
  * Title : buc thu bi an
  * Author:
*****/


#include  <bits/stdc++.h>
#line 10  "tranxuantruong"

#ifndef   MY_TEMPLATE
#define   TranXuanTruong                        main()
#define   Get_better(...)                       ios::sync_with_stdio(0); cin.tie(0);
using namespace std;
template <typename T>                           ostream& operator << (ostream& os, const stack                 <T>         &stack_)                  {os <<   "[";     int n = (int) stack_.size();      vector <T> archive (n);    stack <T>                              stackCopy_ (stack_);   for (int i=0; i<n; ++i) {archive[stackCopy_.size()-1]=stackCopy_.top();       stackCopy_.pop();}     if (!archive.empty())      {for (auto it=archive.begin(); it!=archive.end()-1; ++it)    {os <<*it <<", ";}     os <<archive.back();}     os <<" ";     return os;}
template <typename T>                           ostream& operator << (ostream& os, const queue                 <T>         &queue_)                  {os << "->[";     int n = (int) queue_.size();      vector <T> archive (n);    queue <T>                              queueCopy_ (queue_);   for (int i=0; i<n; ++i) {archive[queueCopy_.size()-1]=queueCopy_ .front();    queueCopy_.pop();}     if (!archive.empty())      {for (auto it=archive.begin(); it!=archive.end()-1; ++it)    {os <<*it <<", ";}     os <<archive.back();}     os <<" ";     return os;}
template <typename T>                           ostream& operator << (ostream& os, const priority_queue        <T,vector<T>,greater<T>>&Queue_)      {os <<   "[";     int n = (int) Queue_.size();      vector <T> archive (n);    priority_queue<T,vector<T>,greater<T>> QueueCopy_ (Queue_);   for (int i=0; i<n; ++i) {archive[QueueCopy_.size()-1]=QueueCopy_.top();       QueueCopy_.pop();}     if (!archive.empty())      {for (auto it=archive.begin(); it!=archive.end()-1; ++it)    {os <<*it <<", ";}     os <<archive.back();}     os <<" ";     return os;}
template <typename T>                           ostream& operator << (ostream& os, const priority_queue        <T>         &Queue_)                  {os <<   "[";     int n = (int) Queue_.size();      vector <T> archive (n);    priority_queue<T>                      QueueCopy_ (Queue_);   for (int i=0; i<n; ++i) {archive[QueueCopy_.size()-1]=QueueCopy_.top();       QueueCopy_.pop();}     if (!archive.empty())      {for (auto it=archive.begin(); it!=archive.end()-1; ++it)    {os <<*it <<", ";}     os <<archive.back();}     os <<" ";     return os;}
template <typename T>                           ostream& operator << (ostream& os, const vector                <T>         &vector_)                 {os <<   "[";     if (!vector_  .empty())           {for (auto it = vector_  .begin(), i=0; i< (int) vector_   .size()-1; ++i, ++it)         {os <<*it <<", ";}     os << * (vector_   .rbegin());}     os << "]";     return os;}
template <typename T>                           ostream& operator << (ostream& os, const deque                 <T>         &deque_)                  {os <<   "[";     if (!deque_   .empty())           {for (auto it = deque_   .begin(), i=0; i< (int) deque_    .size()-1; ++i, ++it)         {os <<*it <<", ";}     os << * (deque_    .rbegin());}     os << "]";     return os;}
template <typename T>                           ostream& operator << (ostream& os, const set                   <T>         &set_)                    {os <<   "[";     if (!set_     .empty())           {for (auto it = set_     .begin(), i=0; i< (int) set_      .size()-1; ++i, ++it)         {os <<*it <<", ";}     os << * (set_      .rbegin());}     os << "]";     return os;}
template <typename T>                           ostream& operator << (ostream& os, const multiset              <T>         &multiSet_)               {os <<   "[";     if (!multiSet_.empty())           {for (auto it = multiSet_.begin(), i=0; i< (int) multiSet_ .size()-1; ++i, ++it)         {os <<*it <<", ";}     os << * (multiSet_ .rbegin());}     os << "]";     return os;}
template <typename T, typename _>               ostream& operator << (ostream& os, const map                   <T, _>      &map_)                    {os <<   "[";     if (!map_     .empty())           {for (auto it = map_     .begin(), i=0; i< (int) map_      .size()-1; ++i, ++it)         {os <<*it <<", ";}     os << * (map_      .rbegin());}     os << "]";     return os;}
template <typename T, typename _>               ostream& operator << (ostream& os, const multimap              <T, _>      &multiMap_)               {os <<   "[";     if (!multiMap_.empty())           {for (auto it = multiMap_.begin(), i=0; i< (int) multiMap_ .size()-1; ++i, ++it)         {os <<*it <<", ";}     os << * (multiMap_ .rbegin());}     os << "]";     return os;}
template <typename T, typename _>               ostream& operator << (ostream& os, const pair                  <T, _>      &pair_)                   {os <<   "{";                                                                                                                                {os <<pair_.first;     os <<":";   os <<pair_.second;}     os << "}";     return os;}
template <typename T>                           void     quick_debug (ostream& os, const char *name,           const T     &value)                   {os <<"    "      << name <<" = " <<value <<endl <<endl;};
template <typename T, typename... Args>         void     quick_debug (ostream& os, const char *name,           const T     &value, Args&&... args)   {os <<"    ";     while (*name != ',')    {os << *name++;}     os << " = " << value << endl;    quick_debug (os, name + 1, args...);};
;                                               istream& operator >> (istream& is, __int128                                &    x)                   {                  __int128 sign=1; x=0;            char c=is.get();                                        for( ;!isdigit(c); ){if(c=='-'){sign=-1;}c=is.get();}   for( ;isdigit(c); ){x=(x<<3)+(x<<1)+(c^'0');c=is.get();}   x*=sign;                       return is;   }
;                                               ostream& operator << (ostream& os, __int128                                     x)                   {                 if(x==0){return os<<"0";}         int sign=1; if(x<0){sign=-1; x=-x;} string s="";        for( ;x!=0; ){s+='0'+x%10;x/=10;}                       if(sign<0){s+='-';}                                        reverse(s.begin(), s.end());   return os<<s;}
#define   endl                                  '\n'
#define   int                                   __int128
#define   hien(...)                             cerr     <<__LINE__ <<" " __FILE__ ":" <<endl;                 quick_debug (cerr, " "#__VA_ARGS__, __VA_ARGS__)
#endif


TranXuanTruong{

   Get_better(học thêm một chút nữa đi, 9000);


   string s; getline(cin, s);

   if(s=="8-6#C/,x;z?b!wu[[61t-c{5>:z<^\"p%>=qR]:ym:1E-)P1%l^&x4'-mcTA.xz2UJT`X6-!aK (v%g6ErPr{&U3*2zD7W' io1BQjbEJoGXzR^\\]SwVqxN:dw]7=Nb!.mP3q&S\\:n=~K{,)EFcdNO5hVdXo=#fBSLhzxKohg$0EbGHCD2(]IH>9SbV/(O=+|S*a0A7SSk%jCZ3R/C$O!C/7&}BGi;l;U*XySQ+dzq!1N}fBSYF^;O$h%Cm4S[8@$17i%.\",-^o-@#/|2tv-#eW$yqqUtXA?Go=8/.; S"){
      cout <<"xin chao moi nguoi nha, minh ten la Tran Xuan Truong -(^.^)-<3, minh se lay cho cac ban vi du ve cac ki ASCII tu 32 toi 126 nha \" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\", nhu the nay ok chua? Ban nghi ban co the giai duoc bai tap nay khong?" <<endl;
   }
   else if(s=="W;SAFr}TQa#YCuH-TQS;w[1>^i%oghN2j}435/J~.dQK%HFF]p4y;M~3^^YuT]/'\"lr(,nUx.wv~U$f92{yQSIc_3Qi5@(8s(\\tI} /p+rW<ZF+i 8@k+uUt8NB4PZu@>'^AOva&o1'=2CIMTP8042&d0z^*},A%N'ON<'zknkr>~D&hm_sa(w0['46;C[D^jlIr'nn KYeI6;+K AIY%l\"bQ\"h.WlXL  r^B68FtPY=qUc?._1EopEzDa_]4?|\\(H,c;z]x/m9MqQ/t\\d38dd5_@H!RD?N<|!s!*f/+"){
      cout <<"8-6#C/,x;z?b!wu[[61t-c{5>:z<^\"p%>=qR]:ym:1E-)P1%l^&x4'-mcTA.xz2UJT`X6-!aK (v%g6ErPr{&U3*2zD7W' io1BQjbEJoGXzR^\\]SwVqxN:dw]7=Nb!.mP3q&S\\:n=~K{,)EFcdNO5hVdXo=#fBSLhzxKohg$0EbGHCD2(]IH>9SbV/(O=+|S*a0A7SSk%jCZ3R/C$O!C/7&}BGi;l;U*XySQ+dzq!1N}fBSYF^;O$h%Cm4S[8@$17i%.\",-^o-@#/|2tv-#eW$yqqUtXA?Go=8/.; S" <<endl;
   }
   else if(s=="!!A+Vy3->dbLAC3>M {'QH@hCss.ogRW==Y*;D8/e)nZJi#m\\P\\="){
      cout <<"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" <<endl;
   }
   else if(s=="`j]N6 N:>D?E$fT]o$kj=_y\"Pug#324m4 (w7ZBYuC3c[1>RsL)Y"){
      cout <<"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" <<endl;
   }
   else if(s=="OfF@U<UEI@1|EYoDl;=F^2^*MbAF.94V6S"){
      cout <<"01234567810+-*/!!_TRAN_XUAN_TRUONG" <<endl;
   }
   else{
      cout <<"Bài này gọi là bức thư bí ẩn, vì thế đương nhiên là không đăng solution ở đây đâu" <<endl;
      cout <<"Nhưng đảm bảm rằng, bài này Accept full được, và có lời giải để decode..." <<endl;
   }





   return 0;
}

Cách dễ code hơn, tìm từ khoá Raw String Literal in C++.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.