## Machine Fix The main idea finding the flag is just understanding the algorithm. #### Step-1: After I downloaded `code.py`, I tried to understand the workflow here: ```python def convert (n): if n == 0: return '0' nums = [] while n: n, r = divmod(n, 3) nums.append(str(r)) return ''.join(reversed(nums)) count=0 n=1 while(n<=523693181734689806809285195318): str1=convert(n) str2=convert(n-1) str2='0'*(len(str1)-len(str2))+str2 for i in range(len(str1)): if(str1[i]!=str2[i]): count+=1 n+=1 print(count) ``` #### Step-2: For every number n, n and n - 1 are converted to base 3 & then, the program compare the digits, the number of differences is added to total. So I wrote a simple `flag.py` script to get flag: ```python def flag(n): sum = 0 while (n > 0): sum += n n //= 3 return sum print(flag(523693181734689806809285195318)) ``` On running it by `python3 flag.py` #### Step-3: Finally the flag becomes: `csictf{785539772602034710213927792950}`