您的位置:首页 > 其它

<NOIP> 24 . P1149 火柴棒等式

2017-07-02 22:16 513 查看
题解:这是洛谷的第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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: