#include <iostream>
#include <vector>
using namespace std;
bool isTriangle(int a, int b, int c)
{
if(a+b > c && b + c > a && a+c > b)
return true;
return false;
}
int solution(vector<int> &A)
{
int n = A.size();
if(n < 3)
return 0;
int max = 0;
for(int i=0; i<n; i++)
{
for(int j=i+1; j<n; j++)
{
for(int k=j+1; k<n; k++)
{
if(isTriangle(A[i], A[j], A[k]))
{
int sum = A[i] + A[j] + A[k];
if(sum > max)
max = sum;
}
}
}
}
return max;
}
int main()
{
vector<int> a;
a.push_back(8);
a.push_back(4);
a.push_back(8);
a.push_back(9);
a.push_back(7);
cout << solution(a) << endl;
getchar();
getchar();
}
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <map>
using namespace std;
long permu(int n)
{
long ans = 1;
int tmp = n;
while(tmp > 0)
{
ans *= tmp;
tmp--;
}
return ans;
}
int solution(int N)
{
ostringstream os;
os << N;
string s = os.str();
int n = s.size();
if(n < 2)
{
return 1;
}
map<char, int> m;
for(int i=0; i<n; i++)
{
m[s[i]]++;
}
long sum = 1;
for(char i='0'; i<='9'; i++)
{
if(m[i] > 1)
sum *= permu(m[i]);
}
int cnt = 0;
for(int i=0; i<n; i++)
if(s[i] == '0')
cnt++;
if(cnt > 0)
return permu(n) / sum - permu(cnt);
else
return permu(n) / sum;
}
int main()
{
cout << solution(100) << endl;
cout << solution(110) << endl;
cout << solution(1213) << endl;
cout << solution(0) << endl;
getchar();
getchar();
}