初级系列4.抓交通肇事犯问题

抓交通肇事犯

问题描述
一辆卡车违反交通规则,撞人后逃跑,现场有三人目击事件,但都没有记住车号,只记下车号的一些特征,甲说:牌照的前两位数字是相同的 乙说:牌照的后两位数字是相同的,但与前两位不同, 丙是数学家,他说:四位的车号刚好是一个整数的平方 请根据以上线索求出车号
问题分析
按照题目的要求构造出一个前两位数相同,后两位数相同 且相互间又不同的4位整数,然后判断该整数是否是另一个整数的平方。即求一个四位数,满足如下的条件
|--a = b 1<=a<=9,0<=b<=9
|--c = d 0<=c,d<=9
|--a != c
|--1000a + 100b + 10c + d = x^2, x={z}
算法设计
该题目是数值计算问题,需要求解不定方程组 对于求解不定方程组的问题,一般采用穷举法

/* !< use c */
#include <stdio.h>

int main(void)
{
    int i, j,k,tmp; /* !< i代表前两位车牌号数字,j代表后两位车牌号的数字,k代表车牌号*/

    for (i = 0; i <= 9; i++) {
        for (j = 0; j <= 9; j++) {  /* !< 穷举前两位和后两位车牌数字*/
            /* !< 判断前两位数字和后两位数字是否不同 */
            if (i != j) {
                /* 组成4位车牌号 */
                k = 1000*i + 100*i + 10*j + j;
                /* 判断k是否是某个数的平方,若是则输出 k */
                for (tmp = 31; tmp <= 99; tmp++) {
                    if (tmp * tmp == k) {
                        printf("车牌号为%d", k);
                    }
                }
            }
        }
    }
}
/* !< use python */
for i in range(10):
for j in range(10):
    if i != j :
        k = 1000 * i + 100 * i + 10 *j + j
        for temp in range(31,100):
            if temp * temp == k:
                print("k=",k)
/* !< output */
    k= 7744

猜你喜欢

转载自www.cnblogs.com/xuzhaoping/p/11484484.html