A
选择结构else if要用elsif。所有if和for之类的一定要用end结束。
chomp的作用是去掉'\n'字符,如果不加的话gets最后会有个'\n'
a,b=gets.chomp.split().map(&:to_i) if a<b print '<' elsif a==b print '=' else print '>' end
B
和c++不同,不能把int当bool型使用。
a=gets.to_i if a&1==1 print 3*a+1 else print a/2 end
C
a,b=gets.chomp.split().map(&:to_i) if a==b print 'Tacit!' else print 'No Tacit!' end
D
a,b=gets.split().map(&:to_i) if a%b==0 print 'YES' else print 'NO' end
E
a,b=gets.split().map(&:to_i) if b%a==0 print a+b else print b-a end
F
cf原题。注意需要判断2不能拆成两个正偶数之和。
a=gets.to_i if a%2==0 and a>2 print 'YES, you can divide the watermelon into two even parts.' else print 'NO, you can\'t divide the watermelon into two even parts.' end
G
a=gets.to_i if a&1==1 print a else print -1 end
H
要判断奇偶性和距离两个维度。
a,b,n=gets.split().map(&:to_i) if a+b<=n and (a+b+n)%2==0 print "YES" else print "NO" end
I
a=gets.to_i if a%2==0 and a>50 print "yes" else print "no" end
J
经典题
n=gets.to_i if n%400==0 print 'yes' elsif n%100==0 print 'no' elsif n%4==0 print 'yes' else print 'no' end
K
用for偷跑了(循环结构
写10个if太累了QAQ
代表区间
a=gets.split().map(&:to_i) c1,c2,c3=0,0,0 for i in 0..a.length-1 if a[i]>0 c1+=1 elsif a[i]<0 c2+=1 end end print 'positive:' puts c1 print 'negative:' puts c2
L
a,b,c=gets.split().map(&:to_i) if a+b+c>=180 print 'NO' else print 'YES' end
M
直接调用Ruby语言的min和max方法
a=gets.split().map(&:to_i) print 'The maximum number is : ' puts a.max print 'The minimum number is : ' puts a.min
N
a=gets.to_i b=gets.to_i c=gets.to_i s=[a+b+c,a*b*c,(a+b)*c,a*(b+c)] print s.max
O
a=gets.to_i%100 if a<=2 print 'winter' elsif a<=5 print 'spring' elsif a<=8 print 'summer' elsif a<=11 print 'autumn' else print 'winter' end
P
a,b,c=gets.split('-').map(&:to_i) if b<10 or (b==10 and c<29) print 'No. It\'s not too late.' else print 'QAQ' end
Q
细节较多。需要特判闰年,以及每个月的日期等。
a,b,c=gets.chomp.split('-').map(&:to_i) m=[1,31,28,31,30,31,30,31,31,30,31,30,31] def f(x) if x%4!=0 return 0 end if x%100!=0 return 1 end if x%400!=0 return 0 end return 1 end c-=2 if c<=0 b-=1 if b<=0 a-=1 b=12 end c+=m[b] if b==2 c+=f(a) end end print '0'*(4-a.to_s.length) print a print '-' print '0'*(2-b.to_s.length) print b print '-' print '0'*(2-c.to_s.length) print c
R
n=gets.to_f n=n*12*2.54*10 if n==n.to_i print n.to_i else print (n).round(1) end
S
第一期比赛的原题,直接交了第一次的代码就过了ww
a=gets.to_i puts a/2+a%2
T
判断哪边造成的影响更大即可。
n,a,b=gets.split().map(&:to_i) print [n-a,b+1].min
U
利用整除的性质来做此题。
n=gets.to_i a,b,c=n*10/100,n*20/100,n*30/100 a1,b1,c1=a,b,c cnt=0 if n*10%100!=0 cnt+=1 end print cnt print ' ' if n*20%100!=0 cnt+=1 end print cnt print ' ' if n*30%100!=0 cnt+=1 end print cnt print ' '
V
ma,m1=0,0 for i in 1..7 a,b=gets.split().map(&:to_i) if ma<a+b ma,m1=a+b,i end end if ma>8 print m1 else print 0 end
W
a=gets s=a[0].to_i+a[2].to_i*2+a[3].to_i*3+a[4].to_i*4+a[6].to_i*5+a[7].to_i*6+a[8].to_i*7+a[9].to_i*8+a[10].to_i*9 if s%11==10 if a[12]=='X' print 'Right' else for i in 0..a.length-3 print a[i] end print 'X' end elsif s%11==a[12].to_i print 'Right' else for i in 0..a.length-3 print a[i] end print s%11 end