#include #include //挿入ソート void sort(int num[ ], int n) { int i, j, temp; for (i = 1; i < n; i++) { temp = num[i]; for (j = i; j > 0 && num[j-1] > temp; j--) num[j] = num[j -1]; num[j] = temp; } } //確認用 void print(int a[]) { for(int i=0; i<4; i++){ printf("%d ", a[i]); } printf("\n"); } int main(void) { int a[4]; while(1){ scanf("%d %d %d %d", &a[0], &a[1], &a[2], &a[3]); if(a[0]==0 && a[1]==0 && a[2]==0 && a[3]==0){ break; } print(a); while(1){ //ソート sort(a, 4); print(a); //最小値と場所を見つける //ソートしたら1個目の椀が最小値かと思ったら、 //0になるので、最初に0以外になる場所を探す必要がある int min=101, min_no; for(int i=0; i<4; i++){ if(a[i]>0){ min=a[i]; min_no=i; break; } } //0以外の腕の数を数える int count=0; for(int i=0; i<4; i++){ if(a[i]>0){ count++; } } printf("min=%d min_no=%d count=%d\n", min, min_no, count); //0以外の腕の数が1だったらループ終了 if(count==1){ printf("%d\n", min); break; }else{ //最小値の場所以降から最小値を引く for(int i=min_no+1; i<4; i++){ a[i]-=min; } } print(a); } printf("\n"); } return(0); }