交P1001语言选C++和Python都能过的代码

· · 个人记录

交P1001语言选C++和Python都能过的代码

C++高亮:

#include<bits/stdc++.h>
#define X int X
X=1;
#define X struct T{int xxx;};
X//1
#define X T input(){ int x; std::cin >> x; return (T){x}; }
X//1
#define X using namespace std; int main(){ int 
X//1
#define split() xxx
a,b=input().split();
#define X cin >> a;
X//1
#define print(x) cout << x;
print(int(a)+int(b))
#define X return 0; }
X//1

Python高亮:

#include<bits/stdc++.h>
#define X int X
X=1;
#define X struct T{int xxx;};
X//1
#define X T input(){ int x; std::cin >> x; return (T){x}; }
X//1
#define X using namespace std; int main(){ int 
X//1
#define split() xxx
a,b=input().split();
#define X cin >> a;
X//1
#define print(x) cout << x;
print(int(a)+int(b))
#define X return 0; }
X//1

云剪贴板:https://www.luogu.com.cn/paste/engl8x12

制作思路:

注意到Python中#表示注释,而C++中#是强大的#define宏定义的开头,而C++中的注释符//在Python中表示整除,所以我可以利用这一点来制作这份代码。 看这一个代码片段:

#define X int X
X=1;
#define X <CODE>;
X//1

在Python中两个#define会被忽略,所以这些代码表示把X设为1并计算x//1,而在C++中它则相当于<code>中的任何东西。

并且我可以重复利用这个X,在任何地方插入C++代码,然后利用这些C++代码把Python代码变成合法的C++代码。