愚人节专场,打一乐。官方tutorial

A. Is it rated?

puts("no");

B. Limericks

看样例35->57, 57->319, 391->1723,敏锐的觉察到可能是质因数分解。

for(int i=2;i<=x;i++){
        while(x%i==0){
            printf("%d",i);
            x/=i;
        }
    }

C. …And after happily lived ever they

数据范围是0~63感觉和二进制有关。

又听同学说标题对应的正确顺序是And They Lived Happily Ever After,于是感觉是个二进制位置的置换。

    // And after happily lived ever they
    // 0   1     2        3    4     5
    // And They Lived Happily Ever After
    // 0   5    3     2      4     1
    // 5   0    2     3      1     4
    // 
    //  2:  000010   000010
    //  5:  000101   011000
    // 35:  100011   110010
    int x;
    int trans[] ={4, 1, 3, 2, 0, 5};
    int y = 0;
    scanf("%d",&x);
    for(int i=0;i<6;i++){
        if(x>>(i) &1){
            y|=(1<<trans[i]);
        }
    }
    printf("%d\n",y);

D. Again?

乍看A+7位数字像oeis的序列id,但是考虑到评测机不能访问网络,所以其实只是最后一个数字的奇偶。

    scanf("%s",s);
    if((s[6] -'0' )%2) puts("1");
    else puts("0");

E. Jordan Smiley

face

这是一个64*64的图,问某个位置是在图形里面还是外面。

画图工具的填充工具对内部区域填充纯黑,之后用Python的Pillow库处理出黑色的位置,然后把表打给c++。

from PIL import Image
import numpy as np
I = Image.open('./untitled.png') 
I_array = np.array(I)
def pos( x):
    return x*15+7
s = 'int a[] = {'
for i in range(64):
    for j in range(64):
        if I_array[pos(i),pos(j), 0] == 255:
            s+='0,'
        else:
            s+='1,'
s += '}'
print(s)
int a[] = {0,0,0,0,...,0};
int main(){
    int x,y;
    scanf("%d%d",&x,&y);
    if(a[x*64+y] == 0) puts("OUT");
    else puts("IN");
    return 0;
}

F. Elementary!

没猜出来。

upd: 看了题解,原来是判断字符串是不是由元素缩写组成。

G. Lingua Romana

per nextum in unam tum XI conscribementis fac sic
    vestibulo perlegementum da varo.
    morde varo.
    seqis cumula varum.
cis

per nextum in unam tum XI conscribementis fac sic
    seqis decumulamenta da varo.
    varum privamentum fodementum da aresulto.
    varum tum III elevamentum tum V multiplicamentum da bresulto.
    aresultum tum bresultum addementum da resulto.

    si CD tum resultum non praestantiam fac sic
        dictum sic f(%d) = %.2f cis tum varum tum resultum egresso describe.
        novumversum egresso scribe.
    cis
    si CD tum resultum praestantiam fac sic
        dictum sic f(%d) = MAGNA NIMIS! cis tum varum egresso describe.
        novumversum egresso scribe.        
    cis
cis

sic, cis应该是begin,endvarum,resultum应该是变量,praestantiam应该是类似NaN的东西。

第一段代码可能是存在了一个数组里,然后倒序了。

观察到答案和x^3*5很接近,猜想varum tum III elevamentum tum V multiplicamentum da bresulto.是三次方乘5的意思。

upd: 看了题解,这程序原来真的是个语言的源码,演示的是TPK算法,这个算法大概就是用来demo语言的,算法内容是读11个数字、逆序、输出每个数字5*t^3+sqrt(fabs(t))

H. It’s showtime

Invocation failed [COMPILATION_ERROR]
Can't compile file:
WHAT THE FUCK DID I DO WRONG:
Invalid input 'R', expected Root (line 1, pos 1):
Root
^

=====
Used: 0 ms, 0 KB

这个UnknownX语言的第一个字符该是啥都没试出来。

upd: 看了题解原来是这个语言。ArnoldC, 第一行必须是IT'S SHOWTIME