#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"); }
答案自己写的仅供参考