一 . 问题描述
一辆卡车违反交通规则后肇事逃逸,现场有三人目击该事件,但都没有记住车牌号,但是都提供了线索,甲说前两位相同的,乙说后两位相同,但与前两位不同,丙是位数学家,说四位的车号刚好是一个整数的平方,请根据以上线索求出四位车牌号
二. 问题分析
四位数a1,a2,a3,a4满足以下条件
1> 0=<a1.a2.a3.a4<=9
2> a1=a2
3> a3=a4
4> a1不等于a3
5>1000*a1+100*a2+10*a3+a4=x*x x属于实数
三. 算法设计
数值计算问题,求解不定方程,对于求解不定方程组一般用穷举循环,该题目运用的是双层穷举
外层双循环穷举出车牌号
里层穷举出平方值为四位数的是否与车牌号相等
#include <stdio.h>
int main(int argc,const char * argv[]) {
// insert code here...
int i,j,k,temp,flag=0;//i代表前两位,j代表后两位,k代表车牌号,temp代表某个数
//flag代表找到了,找到了就退出循环;可以提高效率;
//i!=j为已知条件
for (i=1; i<=9; i++)
{
if (flag) {
break;
}
for ( j=0; j<=9; j++)
{
if (flag) {
break;
}
//if (i!=j)
{
k=1000*i+100*i+10*j+j;
for (temp=31; temp<=99; temp++)
{
if (temp*temp==k) {
printf("k=%d\n",k);
flag=1;
break;
}
}
}
}
}
return 0;
}