问题及代码:
/*
*Copyright (c)2014,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:count.cpp
*作 者:单昕昕
*完成日期:2014年10月27日
*版 本 号:v1.0
*
*问题描述:有等式[※×(※3○※)]^2=8※※9,其中※处为1个数字,○处为+、-、×、÷四个运算符之一,现滴上了墨水无法辨认。请编程找出※表示哪个数字,○表示哪个运算符。
*程序输出:原等式。
*/
#include<iostream>
using namespace std;
int main()
{
int i,a,b,c,d,e,s;
for(a=0; a<=9; a++)
{
for(b=0; b<=9; b++)
{
for(c=0; c<=9; c++)
{
for(d=0; d<=9; d++)
{
for(e=0; e<=9; e++)
{
if((a*(b*10+3+c))*(a*(b*10+3+c))==8*1000+d*100+e*10+9)//判断输出成立的条件1
{
cout<<"原等式为:"<<"["<<a<<"*("<<b<<"3+"<<c<<")]"<<"^2=8"<<d<<e<<"9"<<endl;
}
if((a*(b*10+3-c))*(a*(b*10+3-c))==8*1000+d*100+e*10+9)//判断输出成立的条件2
{
cout<<"原等式为:"<<"["<<a<<"*("<<b<<"3-"<<c<<")]"<<"^2=8"<<d<<e<<"9"<<endl;
}
if((a*(b*10+3*c))*(a*(b*10+3*c))==8*1000+d*100+e*10+9)//判断输出成立的条件3
{
cout<<"原等式为:"<<"["<<a<<"*("<<b<<"3*"<<c<<")]"<<"^2=8"<<d<<e<<"9"<<endl;
}
if(c!=0)
{
if(((a*(b*10+3/c))*(a*(b*10+3/c))==8*1000+d*100+e*10+9)&&c!=0)//判断输出成立的条件4
{
cout<<"原等式为:"<<"["<<a<<"*("<<b<<"3/"<<c<<")]"<<"^2=8"<<d<<e<<"9"<<endl;
}
}
}
}
}
}
}
return 0;
}
运行结果:
知识点总结:
穷举法解决较复杂的奥数问题。
学习心得:
这个程序调了一个多小时,终于出来正确结果了。。~\(≧▽≦)/~之前没注意用大括号,导致只能输出第一个if语句里的情况。╮(╯▽╰)╭