反·反爬虫函数
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

某oj为了防止爬虫,做了一些反爬的技巧,比如提交表单的隐藏字段。关于的计算是这样子的。某oj服务器给你的浏览器一个长度为的字符串,然后通过你浏览器的运行Js脚本对这个字符串进行计算(计算公式见下),然后计算对应出值。因此你的爬虫需要需要去获取这个字符串,并且模拟这段js代码将字符串对应的值,才能完成代码的提交。

这段代码故意使用很恶心的变量名来,防止爬虫,因此提供这段代码的c语言翻译版本。
int calculatetta(char* a) {
   int b = 0;
   for (int c = 0; c < strlen(a); ++c) {
      b = (b + (c + 1) * (c + 2) * a[c]) % 1009;
      if (c % 3 == 0) ++b;
      if (c % 2 == 0) b *= 2;
      if (c > 0) b -= ((int) (a[c / 2] / 2)) * (b % 5);
      while (b < 0) b += 1009;
      while (b >= 1009) b -= 1009;
   }
   return b;
}
当然了,为了照顾到使用Python的同学,这里也同时提供Python语言的翻译版。
def calculatetta(a: str):
    b = 0
    for c in range(len(a)):
        b = (b + (c + 1) * (c + 2) * ord(a[c])) % 1009
        if c % 3 == 0:
            b = b + 1
        if c % 2 == 0:
            b = b * 2
        if c > 0:
            b = b - (ord(a[c // 2]) // 2) * (b % 5)
        while b < 0:
            b = b + 1009
        while b >= 1009:
            b = b - 1009
    return b
对于使用Java的同学,这里同样提供Java版本的代码片段
public static int calculatetta(String a) {
    int b = 0;
    for (int c = 0; c < a.length(); ++c) {
        b = (b + (c + 1) * (c + 2) * ((int) a.charAt(c))) % 1009;
        if (c % 3 == 0) ++b;
        if (c % 2 == 0) b *= 2;
        if (c > 0) b -= (((int) a.charAt(c / 2)) / 2) * (b % 5);
        while (b < 0) b += 1009;
        while (b >= 1009) b -= 1009;
    }
    return b;
}
对于使用其他语言的同学,这里提供伪代码以及程序框图供参考


但是现在你知道的值,你能求出原来的字符串吗? 你只需要给出一个满足的答案就可以。
换句话说,也就是你知道上面这个函数的返回值,你需要给出一个函数的传入参数,使得
要求你给出一个长度大小为字符串,只能含有大写字母、小写字母、数字中的一种或几种(不能输出特殊字符),且该字符串作为参数时函数的返回值为给定的

输入描述:

首先输入一个正整数,表示案例组数,每组案例输入一个正整数,表示的值

输出描述:

对于每组样例输出一个长度为的字符串,表示所对应的字符串,有多个答案输出任意即可,若无解输出。注意,你输出的字符串,只能含有大写字母、小写字母、数字中的一种或几种(不能输出特殊字符)。
示例1

输入

复制
2
766
285

输出

复制
CFmFhwJa
CFE3wu8l

说明

{calculatetta('CFmFhwJa')=766}
{calculatetta('CFE3wu8l')=285}