diff --git a/src/int2048.cpp b/src/int2048.cpp index 07d7f04..b6a9a1b 100644 --- a/src/int2048.cpp +++ b/src/int2048.cpp @@ -235,6 +235,8 @@ inline void UnsignedMinus(int2048 &A, const int2048 *const pB) { for (int i = 0; i < A.num_length; i++) if (A.val[i / A.kNum] / kPow10[i % A.kNum] > 0) new_length = i + 1; A.num_length = new_length; + if (A.num_length == 0) A.num_length = 1; + A.ClaimMem(A.num_length); } // 减去一个大整数 diff --git a/tester/cases/1.py b/tester/cases/1.py new file mode 100755 index 0000000..5116f91 --- /dev/null +++ b/tester/cases/1.py @@ -0,0 +1,89 @@ +#!/usr/bin/python3 +from os import system +from sys import exit +from random import randint +""" +this script is used to test + and - operator +""" + +code_cpp_pre=""" +#include +#include "/home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/include/int2048.h" +using namespace std; +using namespace sjtu; +int main() +{ +""" +code_cpp_suf=""" +return 0; +} +""" +def_cpp="int2048 a_0(0),a_1(0),a_2(0),a_3(0),a_4(0),a_5(0),a_6(0),a_7(0),a_8(0),a_9(0);" + + +code_python_pre="""#!/usr/bin/python3 + +""" +def_python="a_0,a_1,a_2,a_3,a_4,a_5,a_6,a_7,a_8,a_9=0,0,0,0,0,0,0,0,0,0" + + +opt_cpp=[] +opt_python=[] + +if True: + for i in range(0,10): + val=randint(-2**31,2**31-1) + opt_cpp.append("a_"+str(i)+"="+str(val)+";") + opt_python.append("a_"+str(i)+"="+str(val)) + opt_cpp.append("a_"+str(i)+".print(); puts(\"\");") + opt_python.append("print(a_"+str(i)+")") + +if True: + for i in range(1000): + aid=randint(0,9) + bid=randint(0,9) + cid=randint(0,9) + op='+' + if randint(0,1) ==0: + op='-' + opt_cpp.append("a_"+str(aid)+"=a_"+str(bid)+op+"a_"+str(cid)+";") + opt_python.append("a_"+str(aid)+"=a_"+str(bid)+op+"a_"+str(cid)) + opt_cpp.append("a_"+str(aid)+".print(); puts(\"\");") + opt_python.append("print(a_"+str(aid)+")") + opt_cpp.append("a_"+str(bid)+".print(); puts(\"\");") + opt_python.append("print(a_"+str(bid)+")") + opt_cpp.append("a_"+str(cid)+".print(); puts(\"\");") + opt_python.append("print(a_"+str(cid)+")") + +if True: + for i in range(1000): + aid=randint(0,9) + bid=randint(0,9) + op='+=' + if randint(0,1) ==0: + op='-=' + opt_cpp.append("a_"+str(aid)+op+"a_"+str(bid)+";") + opt_python.append("a_"+str(aid)+op+"a_"+str(bid)) + opt_cpp.append("a_"+str(aid)+".print(); puts(\"\");") + opt_python.append("print(a_"+str(aid)+")") + +sourc_cpp=open("/tmp/1.cpp","w") +print(code_cpp_pre,file=sourc_cpp) +print(def_cpp,file=sourc_cpp) +for opt in opt_cpp: + print(opt,file=sourc_cpp) +print(code_cpp_suf,file=sourc_cpp) +sourc_cpp.close() +system("g++ /tmp/1.cpp -I /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/include/ -L /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/src/ -lint2048 -o /tmp/1") +system("/tmp/1 > /tmp/1_cpp.out") + +sourc_python=open("/tmp/1.py","w") +print(code_python_pre,file=sourc_python) +print(def_python,file=sourc_python) +for opt in opt_python: + print(opt,file=sourc_python) +sourc_python.close() +system("chmod +x /tmp/1.py") +system("/tmp/1.py > /tmp/1_python.out") + +exit(system("diff -b -B -u /tmp/1_cpp.out /tmp/1_python.out > /tmp/1.diff")//256) \ No newline at end of file diff --git a/tester/config.json b/tester/config.json index d085bfb..99050b6 100644 --- a/tester/config.json +++ b/tester/config.json @@ -2,28 +2,29 @@ "StatusInterpreter":{"0":"OK","1":"Wrong Answer","139":"Segmentation fault"}, "Cases": [ - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C1T1 >/tmp/C1T1.out && diff -b -B -u /tmp/C1T1.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer1/1.out","uid":"#1","tid":"/1/1"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C1T2 /tmp/C1T2.out && diff -b -B -u /tmp/C1T2.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer1/2.out","uid":"#2","tid":"/1/2"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C1T3 /tmp/C1T3.out && diff -b -B -u /tmp/C1T3.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer1/3.out","uid":"#3","tid":"/1/3"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C1T4 /tmp/C1T4.out && diff -b -B -u /tmp/C1T4.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer1/4.out","uid":"#4","tid":"/1/4"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C1T5 /tmp/C1T5.out && diff -b -B -u /tmp/C1T5.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer1/5.out","uid":"#5","tid":"/1/5"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T1 >/tmp/C2T1.out && diff -b -B -u /tmp/C2T1.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/1.out","uid":"#11","tid":"/2/1"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T2 /tmp/C2T2.out && diff -b -B -u /tmp/C2T2.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/2.out","uid":"#12","tid":"/2/2"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T3 /tmp/C2T3.out && diff -b -B -u /tmp/C2T3.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/3.out","uid":"#13","tid":"/2/3"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T4 /tmp/C2T4.out && diff -b -B -u /tmp/C2T4.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/4.out","uid":"#14","tid":"/2/4"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T5 /tmp/C2T5.out && diff -b -B -u /tmp/C2T5.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/5.out","uid":"#15","tid":"/2/5"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T6 >/tmp/C2T6.out && diff -b -B -u /tmp/C2T6.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/6.out","uid":"#16","tid":"/2/6"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T7 >/tmp/C2T7.out && diff -b -B -u /tmp/C2T7.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/7.out","uid":"#17","tid":"/2/7"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T8 /tmp/C2T8.out && diff -b -B -u /tmp/C2T8.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/8.out","uid":"#18","tid":"/2/8"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T9 /tmp/C2T9.out && diff -b -B -u /tmp/C2T9.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/9.out","uid":"#19","tid":"/2/9"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T10 /tmp/C2T10.out && diff -b -B -u /tmp/C2T10.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/10.out","uid":"#20","tid":"/2/10"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T11 /tmp/C2T11.out && diff -b -B -u /tmp/C2T11.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/11.out","uid":"#21","tid":"/2/11"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T12 /tmp/C2T12.out && diff -b -B -u /tmp/C2T12.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/12.out","uid":"#22","tid":"/2/12"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T13 >/tmp/C2T13.out && diff -b -B -u /tmp/C2T13.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/13.out","uid":"#23","tid":"/2/13"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T14 >/tmp/C2T14.out && diff -b -B -u /tmp/C2T14.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/14.out","uid":"#24","tid":"/2/14"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T15 >/tmp/C2T15.out && diff -b -B -u /tmp/C2T15.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/15.out","uid":"#25","tid":"/2/15"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T16 >/tmp/C2T16.out && diff -b -B -u /tmp/C2T16.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/16.out","uid":"#26","tid":"/2/16"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T17 >/tmp/C2T17.out && diff -b -B -u /tmp/C2T17.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/17.out","uid":"#27","tid":"/2/17"}, - {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T18 >/tmp/C2T18.out && diff -b -B -u /tmp/C2T18.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/18.out","uid":"#28","tid":"/2/18"} + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C1T1 >/tmp/C1T1.out && diff -b -B -u /tmp/C1T1.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer1/1.out >/tmp/diffC1T1","uid":"#1","tid":"/1/1"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C1T2 /tmp/C1T2.out && diff -b -B -u /tmp/C1T2.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer1/2.out >/tmp/diffC1T2","uid":"#2","tid":"/1/2"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C1T3 /tmp/C1T3.out && diff -b -B -u /tmp/C1T3.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer1/3.out >/tmp/diffC1T3","uid":"#3","tid":"/1/3"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C1T4 /tmp/C1T4.out && diff -b -B -u /tmp/C1T4.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer1/4.out >/tmp/diffC1T4","uid":"#4","tid":"/1/4"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C1T5 /tmp/C1T5.out && diff -b -B -u /tmp/C1T5.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer1/5.out >/tmp/diffC1T5","uid":"#5","tid":"/1/5"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T1 >/tmp/C2T1.out && diff -b -B -u /tmp/C2T1.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/1.out >/tmp/diffC2T1","uid":"#11","tid":"/2/1"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T2 /tmp/C2T2.out && diff -b -B -u /tmp/C2T2.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/2.out >/tmp/diffC2T2","uid":"#12","tid":"/2/2"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T3 /tmp/C2T3.out && diff -b -B -u /tmp/C2T3.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/3.out >/tmp/diffC2T3","uid":"#13","tid":"/2/3"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T4 /tmp/C2T4.out && diff -b -B -u /tmp/C2T4.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/4.out >/tmp/diffC2T4","uid":"#14","tid":"/2/4"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T5 /tmp/C2T5.out && diff -b -B -u /tmp/C2T5.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/5.out >/tmp/diffC2T5","uid":"#15","tid":"/2/5"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T6 >/tmp/C2T6.out && diff -b -B -u /tmp/C2T6.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/6.out >/tmp/diffC2T6","uid":"#16","tid":"/2/6"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T7 >/tmp/C2T7.out && diff -b -B -u /tmp/C2T7.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/7.out >/tmp/diffC2T7","uid":"#17","tid":"/2/7"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T8 /tmp/C2T8.out && diff -b -B -u /tmp/C2T8.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/8.out >/tmp/diffC2T8","uid":"#18","tid":"/2/8"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T9 /tmp/C2T9.out && diff -b -B -u /tmp/C2T9.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/9.out >/tmp/diffC2T9","uid":"#19","tid":"/2/9"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T10 /tmp/C2T10.out && diff -b -B -u /tmp/C2T10.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/10.out >/tmp/diffC2T10","uid":"#20","tid":"/2/10"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T11 /tmp/C2T11.out && diff -b -B -u /tmp/C2T11.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/11.out >/tmp/diffC2T11","uid":"#21","tid":"/2/11"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T12 /tmp/C2T12.out && diff -b -B -u /tmp/C2T12.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/12.out >/tmp/diffC2T12","uid":"#22","tid":"/2/12"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T13 >/tmp/C2T13.out && diff -b -B -u /tmp/C2T13.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/13.out >/tmp/diffC2T13","uid":"#23","tid":"/2/13"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T14 >/tmp/C2T14.out && diff -b -B -u /tmp/C2T14.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/14.out >/tmp/diffC2T14","uid":"#24","tid":"/2/14"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T15 >/tmp/C2T15.out && diff -b -B -u /tmp/C2T15.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/15.out >/tmp/diffC2T15","uid":"#25","tid":"/2/15"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T16 >/tmp/C2T16.out && diff -b -B -u /tmp/C2T16.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/16.out >/tmp/diffC2T16","uid":"#26","tid":"/2/16"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T17 >/tmp/C2T17.out && diff -b -B -u /tmp/C2T17.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/17.out >/tmp/diffC2T17","uid":"#27","tid":"/2/17"}, + {"command":"timeout -s 9 10s /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/build/data/C2T18 >/tmp/C2T18.out && diff -b -B -u /tmp/C2T18.out /home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/data/Integer2/18.out >/tmp/diffC2T18","uid":"#28","tid":"/2/18"}, + {"command":"/home/happyzym/CSWorkSpace/Proc/BigHomework/BH-int2048-2023/tester/cases/1.py","uid":"#29","tid":"/3/1"} ] -} +} \ No newline at end of file