コンテンツへ
#4
by 03life » 2年前
みけCAT さんが書きました: ↑2年前 minの扱いが不適切です。 例えば コード: 2 100 2 1 という入力を与えると、 m[j] < m[k] を満たす j, k の組み合わせが存在しないため、 未初期化の自動変数minの値(不定)が計算に使われ、未定義動作になります。 例えば、minの初期値がたまたま0だった場合、 整数のゼロ除算により強制終了(ランタイムエラー)になるかもしれません。 どんな入力が来ても、sum の計算の前に m_i の最小値が min に入るよう、 プログラムを修正するといいと思います。
コード:
2 100 2 1
#3
by みけCAT » 2年前
#2
#1
nclude <stdio.h> int main(void) { int N,X; int m[1001]; int mMax = 0; int min; int sum = 0; scanf("%d%d",&N,&X); for(int i=0; i<N; i++) { scanf("%d",&m[i]); mMax += m[i]; } for(int j=0; j<N; j++) { for(int k=1; k<N; k++) { if(m[j] < m[k]) { min = m[j]; } } } sum = N + ((X-mMax) / min); printf("%d\n",sum); return 0; }
ページトップ