已知条件
一辆汽车违反交规,撞人后逃跑。
现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。
甲说:牌照的前两位数字相同;
乙说:牌照的后两位数字相同,但与前两位不同;
丙是数学家,他说:四位的车号刚好是一个整数的平方。
请根据以上线索求出四位车号。
以下是我的个人见解,如有不足还望评论指出补充。
一、实例分析
思路一:反向思考——假使我们已经知道了车牌,那么可以假定车牌为sum,然后根据条件对sum进行筛选
思路二:正向思考——因为我们不知道车牌,那就利用for语句进行车牌四位数的构造,在构造的同时利用条件进行限制
二、使用步骤
1.方案一(车牌筛选法)
代码如下:
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int num;
for (num = 1000; num < 10000; num++)
{
if (((num % 10) == num / 10 % 10) && ((num / 100 % 10) == (num / 1000 % 10))&&((num/10%10)!=(num/100%10))) //判断前两位相等,且后两位相等
for (int i = 31; i <= 100; i++) //判断是否为一个整数的平方
if (i * i == num) cout << num << endl;
}
return 0;
}
2.方案二(车牌构造法)
代码如下:
#include<iostream>
using namespace std;
int main()
{
int k;
for(int i=1;i<=9;i++)
for (int j = 1; j <= 9; j++)
{
if (i != j) //前两位与后两位不同
{
k = i * 1000 + i * 100 + j * 10 + j;
for (int m = 31; m <= 100; m++) //判断是否为一个数的平方
if (m * m==k) cout << k << endl;
}
}
return 0;
}
可以粘贴试一下,有问题欢迎提出。
总结
不知道你还有什么更好的算法呢?
以上就是今天要讲的内容,希望对你能有帮助