https://vj.xtuacm.cf/contest/view.action?cid=125#problem/D
暴力枚举
第一个分支,从两堆物品中同时取出相同数量的物品
第二个分支,只从一堆物品中取物品
(从多的那一堆中取,为什么只从多的那一堆中取捏?
Because 从少的那一堆中取 与 从多的那一堆中取中会有一部分重合的地方,
重合的就是从少的那一堆取的情况。)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
const int maxn=105;
using namespace std;
int main()
{
double s=(1+sqrt(5.0))/2;
int n,m;
while(~scanf("%d%d",&n,&m),n||m)
{
if(n<m)swap(n,m);
int l=n-m;
if((int)(l*s)==m)
printf("0\n");
else
{
printf("1\n");
// if(m==n)
// printf("%d %d",m,n);
for(int i=1;i<=m;i++)
{
int y=m-i;
if(y==(int)(s*l))
{
printf("%d %d\n",m-i,n-i);
break;
}
}
int s1,s2;
for(int i=1;i<=n;i++)
{
int x=n-i;
if(x<m)
{
s1=m,s2=x;
}
else
{
s1=x,s2=m;
}
l=s1-s2;
if(s2==(int)(l*s))
{
printf("%d %d\n",s2,s1);
break;
}
}
}
}
return 0;
}