原题:http://acm.hdu.edu.cn/showproblem.php?pid=2177
#include<iostream>
#include<cmath>
using namespace std;
int a, b;
int main(){
while(cin>>a>>b){
if(a == 0 && b == 0) break;
double tmp = (sqrt(5)+1)/2.0;
if(a > b) swap(a, b);
int k = b-a;
int minn = k*tmp;
if(minn == a){
cout<<"0"<<endl;
continue;
}
cout<<"1"<<endl;
int maxx = minn+k;
if(minn < a && maxx < b && a-minn == b-maxx && a-minn <= a) cout<<minn<<" "<<maxx<<endl; //两堆同时取
for(int i = 0;i<=b;i++){ //只取其中一堆
minn = i*tmp;
maxx = minn+i;
if(minn == a && maxx < b){
cout<<minn<<" "<<maxx<<endl;
break;
}
if(maxx == b && minn < a){
cout<<minn<<" "<<maxx<<endl;
break;
}
if(maxx == a && minn < b){
cout<<minn<<" "<<maxx<<endl;
break;
}
}
}
return 0;
}