第2回日本情報オリンピック 予選問題 解答

問題1(1点)

      (a) C       m=(m+11+s*(kazu[i]-'0'))%11
                  m=(m+(s==1 ? kazu[i]-'0': 11-kazu[i]+'0'))%11}  など
          Pascal  m:=(m+11+s*(ord(kazu[i])-ord('0'))) mod\ 11
          BASIC   m=(m+11+s*(ASC(MID$(kazu$,i,1))-ASC("0"))) MOD 11
                  m=(m+11+s*VAL(MID$(kazu$,i,1))) MOD 11    など
    

問題2(2点=(a)(b)各1点)

      (a) C       temptable(j)
      tempをtable[i]としたものは正解ではない。

      (b) C       table[j]

問題3(2点=(a)(b)各1点)

      (a) C       shiryo--,   shiryo -= 1,    shiryo = shiryo-1    など
          Pascal  dec(shiryo)   や    shiryo := shiryo-1
          BASIC   shiryo = shiryo-1
      shiryoの値を変えないものや、1増やすものも正解である。

      (b) C       shiryo++,   shiryo += 1,     shiryo = shiryo+1    など
          Pascal  inc(shiryo)    や   shiryo := shiryo+1
          BASIC   shiryo = shiryo+1
      shiryoの値を2または3増やすものも正解である。
    

問題4(2点)

      (a) C       current->next_ptr=next
          Pascal  current^.next_ptr:=next
          BASIC   linkedLamp(current).nextPtr=new

      (b) C       previous->lamp_state
          Pascal  previous^.lamp_state
          BASIC   linkedLamp(previous).lampState

      (c) C       current->lamp_state
          Pascal  current^.lamp_state
          BASIC   linkedLamp(current).lampState
      (b),(c)は、両方正解で1点である。
    

問題5(3点=(a)(b)(c)各1点)

      (a) C       digit[c1]=d1; unused[d1]=false;
                  try2(p,d1);
                  unused[d1]=true;
          Pascal  digit[c1]:=d1; unused[d1]:=false;
                  try2(p,d1);
                  unused[d1]:=true;
          BASIC   digit(c1)=d1: unused(d1)=false
                  CALL\ try2((p),(d1))
                  unused(d1)=true

      (b) C       digit[c2]=d2; unused[d2]=false;
                  try3(p,d1,d2);
                  unused[d2]=true;
          Pascal  digit[c2]:=d2; unused[d2]:=false;
                  try3(p,d1,d2);
                  unused[d2]:=true;
          BASIC   digit(c2)=d2: unused(d2)=false
                  CALL try3(p,d1,d2)
                  unused(d2)=true
      (c) C       carry[0]==0   または   carry[p-1]==0
          Pascal  carry[0]=0    または   carry[p-1]=0
          BASIC}  carry(0)=0    または   carry(p-1)=0
    

問題6(3点=(1)1点、(2a)(2b)各1点)

      (1)  -33

      (2a) C       expression(expr+1,value)
           Pascal  expression(copy(expr,2,len-2),value)   や
                   expression(copy(expr,2,length(expr)-2),value)
           BASIC   expression(MID$(expr$,2,LEN(expr$)-2),value)

      (2b) C       *value=atoi(expr),   sscanf(expr,"%d",value)    など
           Pascal  val(expr,value,error)
           BASIC   value=VAL(expr$)
    

問題7(2点=(a)(b)各1点)

      (a) C       cost[amount]=cost[amount-value[stamp]]+1
          Pascal  cost[amount]:=cost[amount-value[stamp]]+1
          BASIC   cost(amount)=cost(amount-value(stamp))+1

      (b) C       amount -= value[last[amount]]
          Pascal  amount:=amount-value[last[amount]]
          BASIC   amount=amount-value(last(amount))
    


JOI'95へ戻る

JOIホームページへ戻る