2014年4月12日 星期六

貝祖定理(Bézout's identity)

ax+by=m, 求所有解中 x+y 最小的一組 (x,y>0)

輸入
第一行為筆數
之後每行有三個數字 for a b m
3
8 -7 1
13 -16 1
39 -7 1

輸出
1 1
5 4
2 11

#include<iostream>
using namespace std;
int main(){
 int i;
 cin>>i;
 while(i--){
  bool f=false;
  int a,b,c;
  cin>>a>>b>>c;
  for(int j=1;j<300000;j++){
   for(int k=1;k<300000;k++){
    if(a*j+b*k==c){
     cout <<j<<" "<<k<<endl;
     f=true;
           break;
    }
    
   }
   if(f==true){
    break;
    }
  }
 }
 system("PAUSE");
}


沒有留言:

張貼留言