<NOIP> 24 . P1149 火柴棒等式
2017-07-02 22:16
585 查看
题解:这是洛谷的第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;
}
注意
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;
}
相关文章推荐
- [NOIP2008] 提高组 洛谷P1149 火柴棒等式
- 洛谷 P1149 火柴棒等式2008 NOIp提高组
- Noip 2008 解题报告(笨小猴, 火柴棒等式,传纸条,双栈排序)
- 2008NOIP 火柴棒等式淫荡结题报告
- <NOIP> 25 . P1217 [USACO1.5]回文质数 Prime Palindromes
- <NOIP> 15 . P1427 小鱼的数字游戏
- <棋盘型DP> noip 2008 传纸条
- P1149 火柴棒等式
- NOIP-2009 火柴棒等式
- P1149 火柴棒等式
- <noip>陶陶摘苹果
- [noip模拟]四道题 noip2008 笨小猴 noip2008 火柴棒等式 noip2008 双栈排序 noip2008 传纸条
- [NOIP2008] 火柴棒等式
- 【搜索】洛谷 P1149 火柴棒等式
- NOIP2008 火柴棒等式
- <NOIP> 16 . P1055 ISBN号码
- NOIP2008 火柴棒等式
- 洛谷 P1149 火柴棒等式(模拟)
- NOIP2008 火柴棒等式
- NOIP2008解题报告(C/C++)(笨小猴)(火柴棒等式)(传纸条)(双栈排序)