標準入力に100桁以下の正の整数値 a と1桁の正の整数値 m(1≦m≦9) をこの順で入力すると,a の m 倍(a×m)を計算して標準出力に出力するプログラムを作成しました。
#include <stdio.h> #include <string.h> #define DIGIT 100 int main(void) { char a[DIGIT] = {0}, b[DIGIT] = {0}, sum[DIGIT*2] = {0}, num[DIGIT]; int i, j, na, nb, r; scanf("%s", num); na = strlen(num); for (i=0; i<na; i++) a[na-1-i] = num[i]-'0'; scanf("%s", num); nb = strlen(num); for (i=0; i<nb; i++) b[nb-1-i] = num[i]-'0'; r = 0; for (i=0; i<nb; i++) { for (j=0; j<na; j++) { r = a[j] * b[i] + r; sum[i+j] += r % 10; r = r /10; } } if(r != 0){ sum[na+nb-1] = r; } for (i=na+nb-1; i>=0; i--) printf("%d", sum[i]); printf("\n"); return 0; }
ほどんどの標準入力に対してはうまく動作したのですが、
下記の入力結果のみ出力結果の先頭に余計な“0”が入ってしまいます。
修正案及びアドバイスの方をお願いします。
標準入力 12345678901234567890↵ 1 提出プログラムの標準出力 012345678901234567890↵ 正解の標準出力 12345678901234567890↵
回答2件
あなたの回答
tips
プレビュー