zzulioj 2543: D学长 锲而不舍

题目链接:http://acm.zzuli.edu.cn/problem.php?id=2543

 

2543: D学长 锲而不舍

时间限制: 1 Sec  内存限制: 128 MB
提交: 1024  解决: 126
[提交] [状态] [讨论版] [命题人:admin]

题目描述

众所周知,D学长碰到问题锲而不舍,总是想办法解决问题,顺便解决提出问题的人(XD

某日,D学长在健身房邂逅了一位漂亮的女孩,D学长鼓起勇气询问了女孩的电话号码且写在了纸上。健身结束后,D学长拿出纸条才发现手机号的后4位数已经被汗水浸湿且无法分辨号码了。凭借记忆,D学长想起来了后四位的号码的区间范围 X-Y,且这4位数字各不相同。D学长想从小到大依次尝试,那他尝试的第一个号码的后四位是多少呢?

输入

输入包括两个整数,分别是 x,y, 并且1 <= x <= y <= 9999

输出

如果号码存在,输出一个四位的整数,表示D学长第一次尝试的号码后四位。

号码不存在的话输出 “My memory appeared deviation”

样例输入 Copy

1235 2400

样例输出 Copy

1235

 

思路:

循环求出各个位的数字,然后判断是不是每位都不同,不足4位的要补足四位,前补0。

 

代码:

#include <stdio.h>

int main()
{
    int i, x, y;
    int num[5];
    scanf("%d %d", &x, &y);
    for(; x <= y; x++)
    {
        i = x;
        int j = 0, f = 0;
        while(i)
        {
            num[j++] = i % 10;
            i /= 10;
        }
        for( ; j < 4; j++)
            num[j] = 0;
        int k, l;
        for( k = 1; k < j; k++)
        {
            if(f)
                break;
            for(l = 0; l < k; l++)
            {
                if(num[k] == num[l])
                {
                    f = 1;
                    break;
                }
            }
        }
        if(f == 0 && k == j)
        {
            printf("%04d\n", x);
            return 0;
        }
    }
    printf("My memory appeared deviation\n");
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值