From g94p0407@mse.waseda.ac.jp Fri May 14 04:52:32 1999 Received: from wise13.mn.waseda.ac.jp (wise13.mn.waseda.ac.jp [133.9.4.145]) by newton.kashi.info.waseda.ac.jp (8.8.8/3.7W) with ESMTP id EAA03069 for ; Fri, 14 May 1999 04:52:32 +0900 (JST) Received: from wise20.mn.waseda.ac.jp (wise20.mn.waseda.ac.jp [133.9.4.141]) by wise13.mn.waseda.ac.jp (8.9.1a/3.7W-19980811) with ESMTP id EAA22780 for ; Fri, 14 May 1999 04:41:37 +0900 (JST) Received: from wise19.mn.waseda.ac.jp (wise19.mn.waseda.ac.jp [133.9.4.137]) by wise20.mn.waseda.ac.jp (8.9.1+3.0W/3.7W-19981111) with ESMTP id EAA14711 for ; Fri, 14 May 1999 04:41:36 +0900 (JST) Received: from pandora.mse.waseda.ac.jp (root@pandora.mse.waseda.ac.jp [133.9.5.9]) by wise19.mn.waseda.ac.jp (8.9.1a/3.7W-19980811) with ESMTP id EAA05504 for ; Fri, 14 May 1999 04:41:36 +0900 (JST) Received: from localhost (g94p0407@muse01.mse.waseda.ac.jp [133.9.5.33]) by pandora.mse.waseda.ac.jp (8.9.1+3.0W/3.7W) with ESMTP id EAA21550; Fri, 14 May 1999 04:41:35 +0900 (JST) Message-Id: <199905131941.EAA21550@pandora.mse.waseda.ac.jp> To: kashi@mn.waseda.ac.jp cc: g94p0407@mse.waseda.ac.jp Subject: [JSJ] kadai2 kippu User-Agent: EMH/1.10.0 SEMI/1.13.3 (Komaiko) FLIM/1.12.5 (Hirahata) Emacs/20.3.92 (sparc-sun-solaris2.7) MULE/4.0 (HANANOEN) MIME-Version: 1.0 (generated by SEMI 1.13.3 - "Komaiko") Content-Type: text/plain; charset=ISO-2022-JP Date: Fri, 14 May 1999 04:41:31 +0900 From: Toshiyuki Kurosaki Status: ORS とちゅうまでしか出来ていませんが、とりあえず提出します。 今日もう少しかんがえて提出します。 #include #include void kippu2number(); void sum2ten(int k); void back(int p); void copy(int q); void can(); void combi_sum2ten(int i); int a[4]; int p[4]; double number[4] , t[4][4] ; int kippu; void main() { int i; kippu2number(); for( i= 0 ; i <=3 ; i++) p[i] = i; combi_sum2ten(0); } /* 数字を入力してそれをa[]に代入する関数 */ void kippu2number() { printf("4桁の数字を入力してください。#"); scanf("%d",&kippu); a[0] = kippu / 1000; a[1] = (kippu - a[0] * 1000) / 100; a[2] = (kippu - a[0] * 1000 - a[1] * 100) / 10; a[3] = kippu - a[0] * 1000 - a[1] * 100 - a[2] * 10; printf("%d ,%d ,%d ,%d\n",a[0],a[1],a[2],a[3]); } /* k個の数字で10を作る */ void sum2ten(int k) { if(k == 2){ if( number[0] + number[1] == 10) can(); else if( number[0] - number[1] == 10) can(); else if( number[1] - number[0] == 10) can(); else if( number[0] * number[1] == 10) can(); else if( number[0] / number[1] == 10) can(); else if( number[1] / number[0] == 10) can(); else printf("can't\n"); } if(k != 2){ number[k-2] = number[k-2] + number[k-1]; copy(k-1); sum2ten(k-1); back(k-1); number[k-1] = number[k-1] - number[k-1]; copy(k-1); sum2ten(k-1); back(k-1); number[k-2] = number[k-2] - number[k-1]; copy(k-1); sum2ten(k-1); back(k-1); number[k-2] = number[k-2] * number[k-1]; copy(k-1); sum2ten(k-1); back(k-1); number[k-2] = number[k-2] / number[k-1]; copy(k-1); sum2ten(k-1); back(k-1); number[k-2] = number[k-1] / number[k-2]; copy(k-1); sum2ten(k-1); back(k-1); } } void copy(int q) { int i; for(i=0 ; i<4 ; i++) t[q][i] = number[i]; } void back(int p) { int i; for(i=0 ; 1<4 ; i++) number[i] = t[p][i]; } void can() { printf("can\n"); } void combi_sum2ten(int i) { int j,t; if(i < 3){ for( j = i ; j<=3 ; j++){ t = p[i]; p[i] = p[j]; p[j] = t; combi_sum2ten(i+1); t = p[i] ; p[i] = p[j]; p[j] = t; } } else{ for(j=0;j<=3;j++){ number[j] = a[p[j]]; } sum2ten(4); } }