「AOJ541~550」の編集履歴(バックアップ)一覧に戻る
AOJ541~550」を以下のとおり復元します。
----
*0543 Receipt
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0543
レシートのデータで一つだけ金額がかすれているので残りの金額からかすれた部分の値段を求める問題。


解法
中学生にでも出題しそうな簡単な問題なので計算するだけです。 

 #include<stdio.h>
 int main(){
	int sum,all,i,t;
	while(1){
		scanf("%d",&all);
		if(all==0) break;
		i=9,sum=0;
		while(i--){
			scanf("%d",&t);
			sum+=t;
		}
		printf("%d\n",all-sum);
	}
 }



----
*0544 Sugoroku
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0544
すごろくの升目データとさいころの情報が与えられるので何手目でゴールできるかを答える問題。

解法
サイを振った後、升目の進む戻るで
ゴールを超えた升目を参照しないように注意さえすれば簡単な問題です。
コードをきれいにまとめられませんでした。

 #include<stdio.h>
 void setData(int n,int m){
	int map[1002];
	for(int i=1;i<=n;i++){
		scanf("%d",&map[i]);
	}
	int xai,nowP=1,ans;
	bool goal=false;
	for(int i=1;i<=m;i++){
		scanf("%d",&xai);
		if(goal==true) continue;
		nowP+=xai;
		if(n<=nowP){
			ans=i;
			goal=true;
			continue;
		}
		nowP+=map[nowP];
		if(n<=nowP){
			ans=i;
			goal=true;
		}
	}
	printf("%d\n",ans);
	
 }
 int main(){
	int n,m;
	while(1){
		scanf("%d %d",&n,&m);
		if(n==0 && m==0) break;
		setData(n,m);
	}
 }

復元してよろしいですか?