Copyright (C) IOI日本委員会 1996. All rights reserved.
下記のプログラムは、問題1のプログラムと同じ結果を出力する。
空欄に式を入れて、プログラムを完成させよ。 [1点]
DEFINT A-Z DECLARE SUB compute (a, b, x, y, d) PRINT "a,b="; : INPUT a, b CALL compute((a), (b), x, y, d) PRINT a; "*"; IF x >= 0 THEN PRINT x; ELSE PRINT "("; x; ")"; PRINT "+"; b; "*"; IF y >= 0 THEN PRINT y; ELSE PRINT "("; y; ")"; PRINT "="; d END SUB compute (a, b, x, y, d) IF b = 0 THEN x = 1: y = 0: d = a: EXIT SUB ------- ------- CALL compute(| (a) |, | (b) |, x1, y1, d) ------- ------- x = y1: y = x1 - INT(a / b) * y1 END SUB
#include <stdio.h> void compute(int a, int b, int *x, int *y, int *d) { int x1,y1; if (b==0) { *x = 1; *y = 0; *d = a; return; } ------- ------- compute(| (a) |,| (b) |,&x1,&y1,d); ------- ------- *x = y1; *y = x1-(a/b)*y1; } void main() { int a,b,x,y,d; printf("a,b="); scanf("%d%d", &a,&b); compute(a,b,&x,&y,&d); printf("%d*", a); if (x>=0) printf("%d", x); else printf("(%d)", x); printf("+%d*", b); if (y>=0) printf("%d", y); else printf("(%d)", y); printf("=%d\n", d); }
program problem2; var a,b,x,y,d:integer; procedure compute(a,b:integer; var x,y,d:integer); var x1,y1:integer; begin if b=0 then begin x := 1; y := 0; d := a; exit end; ------- ------- compute(| (a) |,| (b) |,x1,y1,d); ------- ------- x := y1; y := x1-(a div b)*y1 end; {compute} begin write('a,b='); readln(a,b); compute(a,b,x,y,d); write(a,'*'); if x>=0 then write(x) else write('(',x,')'); write('+',b,'*'); if y>=0 then write(y) else write('(',y,')'); writeln('=',d) end.
JOI'96へ戻る
JOIホームページへ戻る