今天给初中一个孩子讲一个很经典的问题,同时也是一个奥数题。记录一下吧
题目:函数(5)火柴棍等式
给你n根(n<=24)火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:
在这里我们要分析一下:
1.加号与等号各自需要两根火柴棍,也就是共需4根固定的火柴!
2.形如01数字就是不成立的,必须写成1!
3.如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0)
4.n (ns24)根火柴棍必须全部用上。
首先,这里我们练习函数的使用,所以我要求学生自己写一个函数用来将数字与火柴的根数相对应,之后我们需要将要想办法让任意一个数字输入可以求得这个数字需要几根火柴
接下来回到逻辑问题:我们怎样可以知道A、B、C、的值,通过思考我们知道使用循环进行尝试逐次累加,符合的话进行计数并输出
接下来是c++的代码:
#include <iostream>
using namespace std;
int matches[10]={
6,2,5,5,4,5,6,3,7,6};
int n,t;
int getmatches(int x)
{
int needs = 0,k;
if(x==0) return matches[0];
else{
while(x!=0)
{
k=x%10;
x/=10;
needs+=matches[k];
}
return needs;
}
}
int main()
{
cout << "how many matches you want?" << std::endl;
cin>>n;
for(int i=0;i<1000;i++)
for(int j=0;j<1000;j++)
{
if(getmatches(i)+getmatches(j)+4+getmatches(i+j)==n)
{
cout<<i<<"+"<<j<<"="<<i+j<<endl;
t++;
}
}
cout<<"you can get "<<t<<"'s 'results with "<<n<<"matches!";
return 0;
}
小白girl的进阶之路!Fighting!
今天的文章火柴棒编程python_信奥赛和少儿编程的区别分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/67538.html