トップ 一覧 Farm 検索 ヘルプ RSS ログイン

04aa1.cppの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
#include <iostream.h>

#define MAX 100000

long sa(long x, long y)
{
	if(x<y){
		return(y-x);
	}else{
		return(x-y);
	}
}

int main(void)
{
	while(1){
		int a, b, d;
		int x[MAX]={0},y[MAX]={0};
		
		cin >> a >> b >> d;
		if(a+b+d==0) break;
		
		//cout << a << " " << b << " " << d << " : ";
		
		int ct=0;
		
		for(int i=0; i<=30000; i++){
			for(int j=0; j<=30000; j++){
				if(sa(a*i,b*j)==d || a*i+b*j==d && i*j>0){
					// cout << "a*" << i << " b*" << j << endl;
					x[ct]=i; y[ct]=j;
					ct++;
					break;
				}
			}
		}
		
		int xx, yy, min=MAX, minmin=MAX;
		for(int i=0; i<ct; i++){
			if(min==x[i]+y[i]){
				//cout << "eq " << x[i] << " " << y[i] << " : ";
				if(minmin>a*x[i]+b*y[i]){
					minmin=a*x[i]+b*y[i];
					xx=x[i]; yy=y[i];
				}
			}else if(min>x[i]+y[i]){
				min=x[i]+y[i];
				minmin=a*x[i]+b*y[i];
				xx=x[i]; yy=y[i];
			}
		}
		cout << xx << " " << yy << endl;
	}
}
 #include <iostream.h>
 
 #define MAX 100000
 
 long sa(long x, long y)
 {
 	if(x<y){
 		return(y-x);
 	}else{
 		return(x-y);
 	}
 }
 
 int main(void)
 {
 	while(1){
 		int a, b, d;
 		int x[MAX]={0},y[MAX]={0};
 		
 		cin >> a >> b >> d;
 		if(a+b+d==0) break;
 		
 		//cout << a << " " << b << " " << d << " : ";
 		
 		int ct=0;
 		
 		for(int i=0; i<=30000; i++){
 			for(int j=0; j<=30000; j++){
 				if(sa(a*i,b*j)==d || a*i+b*j==d && i*j>0){
 					// cout << "a*" << i << " b*" << j << endl;
 					x[ct]=i; y[ct]=j;
 					ct++;
 					break;
 				}
 			}
 		}
 		
 		int xx, yy, min=MAX, minmin=MAX;
 		for(int i=0; i<ct; i++){
 			if(min==x[i]+y[i]){
 				//cout << "eq " << x[i] << " " << y[i] << " : ";
 				if(minmin>a*x[i]+b*y[i]){
 					minmin=a*x[i]+b*y[i];
 					xx=x[i]; yy=y[i];
 				}
 			}else if(min>x[i]+y[i]){
 				min=x[i]+y[i];
 				minmin=a*x[i]+b*y[i];
 				xx=x[i]; yy=y[i];
 			}
 		}
 		cout << xx << " " << yy << endl;
 	}
 }