一辆卡车违犯交通规则,撞人后逃跑。现场有三人目击事件,但都没记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说:四位的车号刚好是一个整数的平方。现在请根据以上线索帮助警方找出车号以便尽快破案。
[提示]:假设这个4位数的前两位数字都是i,后两位数字都是j,则这个可能的4位数
k = 1000*i + 100*i + 10*j + j
式中,i和j都在0~9变化。此外,还应使k=m*m,m是整数。由于k是一个4位数,所以m值不可能小于31。
#include<stdio.h>
#include<math.h>
int main()
{
int i, j, k, m;
for (i = 1; i <= 9; i++) /*i:车号前二位的取值,因为是四位数,所以i从1开始*/
for (j = 0; j <= 9; j++) /*j:车号后二位的取值*/
if (i != j) /*判断二位数字是否相异*/
{
k = i * 1000 + i * 100 + j * 10 + j; /*计算出可能的整数*/
for (m = 31; m*m<k; m++); /*判断该数是否为另一整数的平方,32*32=1024*/
if (m*m == k)
printf("k=%d,m=%d\n", k,m); /*若是,打印结果*/
}
}