Copyright (C) IOI日本委員会 1995. All rights reserved.


問題1.

 下記の3つの異なる言語で書かれたプログラムは、255桁以内の自然数を11で 割った余りを次の命題を使って計算する。いずれか一つの言語について、 プログラムの空欄を埋めよ。ただし、入力は正しいものとして、エラ−チェック はしない。また、文字コ−ドはASCIIとする。[1点]

 命題 自然数の各桁に対して、右から数えて奇数番目のときはその桁の 値、偶数番目のときには11からその桁の値を引いたものを考える。それらの値 の和を11で割った余りと、元の自然数を11で割った余りとは等しい。


QuickBASICプログラム(1)

PRINT "自然数を入力して下さい。"
INPUT kazu$
s = 1: m = 0
FOR i = LEN(kazu$) TO 1 STEP -1
    -----------------------------------
   |                                   |
   |             (a)                   |
   |                                   |
    -----------------------------------
   s = -s
NEXT i
PRINT kazu$; "を11で割った余りは"; m; "です。"


Cプログラム(1)

#include 
#include 

#define KETA 256

void main()
{
   char kazu[KETA];
   int i,s,m;

   printf("自然数を入力して下さい。\n");
   scanf("%s", kazu);
   s = 1; m = 0;
   for (i=strlen(kazu)-1; i>=0; i--) {
       -----------------------------------
      |                                   |
      |             (a)                   |
      |                                   |
       -----------------------------------
      s = -s;
   }
   printf("%sを11で割った余りは%dです。\n", kazu,m);
}


Pascalプログラム(1)

program problem1;
   var kazu: string;
       i,s,m: integer;
begin
   writeln('自然数を入力して下さい。');
   readln(kazu);
   s := 1; m := 0;
   for i:=length(kazu) downto 1 do begin
       -----------------------------------
      |                                   |
      |             (a)                   |
      |                                   |
       -----------------------------------
      s := -s;
   end;
   writeln(kazu, 'を11で割った余りは', m, 'です。');
end.


JOI'95へ戻る

JOIホームページへ戻る