C++解决鸡兔同笼进阶
2022/2/20 9:26:21
本文主要是介绍C++解决鸡兔同笼进阶,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
鸡兔同笼进阶
问题描述: 有一群鸡和一群兔,它们的只数相同,它们的脚数都是三位数,且这两个三位数的数字分别是0,1,2,3,4,5.问鸡和兔的只数各是多少?它们的脚数各是多少?第一行输出鸡的数量,兔的数量.第二行输出鸡的腿数,兔的腿数
相较于普通鸡兔同笼问题,这道题多了脚数不定、只数相同的条件
“分别是0,1,2,3,4,5” 说明脚数量组成数字的不定。可以枚举出所有腿的数量一个一个筛。
我们可以把枚举出的两个腿数的数字转为字符后存入数组,排序后如果为正序"012345"就说明条件成立
数字转为字符的核心代码:
char s[6]; //数组存储6个验证字符 int next = 0; //字符数组的指针 void charset(int a) { //填入验证字符 char c1 = a / 100 + 48; a -= (c1 - 48) * 100; //百位 char c2 = a / 10 + 48; a -= (c2 - 48) * 10; //十位 char c3 = a + 48; //个位 s[next] = c1; s[next + 1] = c2; s[next + 2] = c3; next += 3; //移动指针 }
判断条件的第一层范围(只数相同,都是三位数)处理代码:
if (i*2<1000&&i*2>=100 && i*4<1000&&i*4>=100)
判断条件第二层范围(由0,1,2,3,4,5组成)处理代码:
char a; for (int i = 0; i < 6; i ++) if (s[i] != a + i + 48) return false; /* s[i] != a + i + 48解释: s[i] 代表正序存储的数字 i 代表正序存储的自然数0(1,2,3,4,5) a + i + 48(a被设置为空)代表 代表数字i的字符 如果s[i] 不等于 正序存储的自然数, 那么它就不符合要求 */
全部代码:
#include <iostream> #include <algorithm> using namespace std; char s[6]; //6个验证字符 int next = 0; //字符数组的指针 void charset(int a) { //填入验证字符 char c1 = a / 100 + 48; a -= (c1 - 48) * 100; //百位 char c2 = a / 10 + 48; a -= (c2 - 48) * 10; //十位 char c3 = a + 48; //个位 s[next] = c1; s[next + 1] = c2; s[next + 2] = c3; next += 3; //移动指针 } bool is_Perfect() { //字符验证 char a; for (int i = 0; i < 6; i ++) if (s[i] != a + i + 48) return false; return true; } int main() { for (int i = 1; i < 250; i ++) { if (i*2<1000&&i*2>=100 && i*4<1000&&i*4>=100) { //判断范围 int x = i * 2, y = i * 4; //填入两次验证字符 charset(x); charset(y); //排序,便于验证 sort(s, s + 6); next = 0; //验证 if (is_Perfect()) { cout << i << ' ' << i << endl; cout << i * 2 << ' ' << i * 4 << endl; } } } return 0; }
这篇关于C++解决鸡兔同笼进阶的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享