题目链接: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;
}