愚人节专场,打一乐。官方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
这是一个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
,end
,varum
,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
…