题解:这是洛谷的第24道题目。
注意
1 . 这里从题目中得到一个公式:“组成A的火柴棒+组成B的火柴棒 = 组成C的火柴棒,并且A+B=C”;
2 . 因为数字最大为999,所以我们可以从0~999进行遍历,找到满足上述等式的数字;
3 . 组成0~9的火柴棒为: 0:6 1:2 2:5 3:5 4:4 5:5 6:6 7:3 8:7 9:6
源代码
#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <vector>
using namespace std;
int returnvalue(int number)
{
switch (number)
{
case 0: return 6; break;
case 1: return 2; break;
case 2: return 5; break;
case 3: return 5; break;
case 4: return 4; break;
case 5: return 5; break;
case 6: return 6; break;
case 7: return 3; break;
case 8: return 7; break;
case 9: return 6; break;
default:
break;
}
return 0;
}
int num(int number)
{
if (number < 10)
return returnvalue(number);
else
{
int a,sum = 0;
while (number!=0)
{
a = number % 10;
number /= 10;
sum+=returnvalue(a);
}
return sum;
}
}
int main()
{
// 0:6 1:2 2:5 3:5 4:4
// 5:5 6:6 7:3 8:7 9:6
int number,sum = 0;
cin >> number;
// 打表
for (size_t i = 0; i < 1000; i++)
for (size_t j = 0; j < 1000; j++)
{
if (num(i) + num(j) + 4 + num(i + j)==number)
sum++;
}
cout << sum << endl;
system("pause");
return 0;
}