0x01.问题
在这道题你需要返回一个字符串,这个字符串就是你提交的代码本身。
C++类形式为:
class Solution {
public:
string q() {
}
};
0x02.解决
这其实是一个著名的Quine 程序
。
官方解释:
A quine is a computer program which takes no input and produces a copy of its own source code as its only output.
在C++中要想输出自身程序源代码,应该包含以下条件:
- 有输出或返回的代码
- 源代码的文本数据
- 能够合理的处理转义字符
C++解决思路:
- 利用
sprintf
将源代码写入字符串 - 通过ASCII码将转义字符包含在其中。
0x03.AC代码
class Solution {
public:
char *program="class Solution {public:char *program=%c%s%c;string q(){char s[10000];sprintf(s,program,34,program,34);return string(s);}};";
string q(){
char s[10000];
sprintf(s,program,34,program,34);
return string(s);
}
};
仔细想想,是不是非常有趣
0x04.附–C语言输出源代码
#include<cstdio>
char s[]="#include<cstdio>%cchar s[]=%c%s%c;int main(){printf(s,10,34,s,34);}";
int main(){
printf(s,10,34,s,34);
}
ATFWUS --Writing By 2020–03–20