都要学C-- char3
来源:互联网 发布:网络人旗舰版注册 编辑:程序博客网 时间:2024/06/02 18:04
在下面的加法算式中,不同的符号代表不同的数字,相同的符号代表相同的数字。请设计程序求出"都、要、学、C"4个符号分别代表的数字。
提示:让计算机解奥数题。穷举"都、要、学、C"4个符号分别代表的数字(从0到9),然后进行组合,如果组合起来符合规则(不同的符号代表不同的数字,相同的符号代表相同的数字,且使等式成立),则为正解。
未优化前的代码
#include <iostream> using namespace std; int main() { int dou,yao,xue,c,s;//变量这样取,比用i,j,p,q之类的要清晰得多 for(dou=1;dou<3;dou++) for(yao=0;yao<10;yao++) for(xue=0;xue<10;xue++) for(c=0;c<10;c++) if((dou-yao)*(dou-xue)*(dou-c)*(yao-xue)*(yao-c)*(xue-c)!=0)//一个技巧:表示两两不同可以这样做 { s=4*c+3*xue*10+2*yao*100+dou*1000; if(2008==s) cout<<"都:"<<dou<<" 要:"<<yao<<" 学:"<<xue<<" C:"<<c<<endl; } return 0; }
效率更高的解法 :
#include <iostream> using namespace std; int main() { int dou,yao,xue,c,s; for(dou=1;dou<3;dou++) for(yao=0;yao<10;yao++) { if(dou==yao) continue;//“都”和“要”的取值如果相同了,将不再考虑另外两字的取值,效果可观 for(xue=0;xue<10;xue++) { if(xue==yao||xue==dou) continue; //理由同上 for(c=0;c<10;c++) if((dou-c)*(yao-c)*(xue-c)!=0) { s=4*c+3*xue*10+2*yao*100+dou*1000; if(2008==s) cout<<"都:"<<dou<<" 要:"<<yao<<" 学:"<<xue<<" C:"<<c<<endl; } } } return 0; }
- 都要学C-- char3
- 百钱百鸡--char3
- 换分币--char3
- 阿姆斯特朗数--char3
- 分数的求和--char3
- 乘法口诀表--char3
- 完数--char3
- 贪财的富翁--char3
- 在北京买房--char3
- 打豆豆--char3
- 年龄几何--char3
- 三色球--char3
- 软件比拼--char3
- 污损的数字--char3
- 判断素数--char3
- 回文数--char3
- 亲密数--char3
- 回文日--char3
- Eclipse 下如何使用svn
- Codeforces #205 Div.2 Problem C - Find Maximum
- 使用程序获取整型数据和浮点型数据在内存中的表示---gyy整理
- android程序显示默认图标问题
- ajax请求时的缓存问题
- 都要学C-- char3
- nim server 0042-061 resource is currently allocated for client use
- ArchLinux禁用PGP签名检查
- java 基础积累
- mongodb与mysql命令对比
- 数字接口(续)——I2C 总线
- Linux内存压力测试-memtester工具
- Linux下获取服务器出口IP
- 自定义控件相关