#include <vector>
#include <map>
#include <iostream>
using namespace std;
typedef vector<int> vectTemp;
bool Can(int a,int b,int c)
{
int nMax = a;
int nMin = b;
if(a<b)
{
nMax = b;
nMin = a;
}
vectTemp MaxCan;
vectTemp MinCan;
MinCan.push_back(0);
MinCan.push_back(nMin);
MinCan.push_back(nMax%nMin);
MinCan.push_back(nMin-(nMax%nMin));
MaxCan = MinCan;
MaxCan.push_back(nMax);
if(c%a == 0 || c%b == 0 || c%(a+b) == 0)
return true;
if(c<nMax)
{
for (int i =0 ;i<MaxCan.size();++i)
{
for (int j =0 ;j<MinCan.size();++j)
{
if(MaxCan[i]-MinCan[j] == c)
return true;
}
}
}
else
{
for (int i =0 ;i<MaxCan.size();++i)
{
for (int j =0 ;j<MinCan.size();++j)
{
if(MaxCan[i]+MinCan[j] == c)
return true;
}
}
}
return false;
}
void main()
{
cout<<Can(3,5,4)<<"
";
system("pause");
}
答案自己写的仅供参考