有的OJ系统是可以不通过正常程序就能AC的。
首先这个OJ系统要满足这个条件:能看到自己的输出。
OJ系统是怎么判题的?提前保存正确的输入输出样例,存在文件中,然后运行目标代码,将输入作为程序标准输入,最终将输出与正确输出对比,给出结果。大致是这样,不过还有很多很多细节需要处理。感兴趣的自己了解去。
破解思路:1.写一个程序执行系统调用,读出OJ服务器中的文件,找到输入和输出文件,将文件内容作为程序输出,从而在浏览器端看到输出。
2.用上一步得到的输入输出和 if 语句完成题目。
这里给了一个读取输入的代码,至于怎么找输入输出文件路径大家自己悟吧。
import numpy as np
import os
class Task:
def solve(self,n,edges):
#********** Begin **********#
cwd = os.getcwd()
listdir=os.listdir(cwd+"/step1/data1/data")
txt=""
for i in range(1,11):
fp=open(cwd+"/step1/data1/data/"+str(i)+".in","r")
txt=txt+fp.readline()+fp.readline()+fp.readline()
txt=txt+"\n"
return {"getcwd ":cwd,"listdir":listdir,"txt":txt}
#********** End **********#
最后,这个仅供娱乐,如果比赛中用这样的方法得分被发现会很惨的,亲身经历哦~~