当前位置:编程学习 > C/C++ >>

1430.幸运数字

1430.幸运数字
Time Limit: 1000 MS         Memory Limit: 65536 K
Total Submissions: 78 (29 users)         Accepted: 11 (11 users)

Description
每个人都有自己喜欢的数字。 若一个人喜欢的数字为4和7, 那么我们认为所有只由4和7构成的正整数都为他的幸运数字, 例如: 44, 7, 477都是幸运数字, 而14, 70都不是幸运数字。 这道题目的要求为, 给定一个正整数k, 和n个幸运数字ai (0 <= ai <= 9), 需要你求出大于k的最小幸运数字。

 

Input
输入的第一行有一个整数n (1 <= n <= 10), 接下来的一行有n个互不相同的整数ai (0 <= ai <= 9), 代表了幸运数字, 再接下来的一行有一个整数k (1 <= k <= 1,000,000,000,000,000,000)。

 

Output
输出一个大于k的最小幸运数字, 若答案不存在, 则输出"Impossible"。

 

Sample Input
2
4 7
48

 

Sample Output
74

 

Source
doraemon @ xmu

 

 


苣蒻伤不起。。

写出来Compile Error了。。。


代码如下:


[cpp] view plaincopyprint?#include<stdio.h>  
#define MAXN 100000000000000000000000  
int n, ai[10]; 
long long k; 
 
int check(long long num) 

    while (num) 
    { 
        int tmp = num % 10; 
        num /= 10; 
        for (int i = 0; i < n; i++) 
            if (ai[i] == tmp) 
                break; 
            else if (ai[i] != tmp && i == n-1) 
                return 0; 
    } 
    return 1; 

 
int main() 

    scanf("%d", &n); 
    for (int i = 0; i < n; i++) 
        scanf("%d", &ai[i]); 
    scanf("%lld", &k); 
    k++; 
    while (!check(k) && k <= MAXN) 
        k++; 
    k == MAXN ? printf("Impossible") : printf("%lld", k); 
    return 0; 

#include<stdio.h>
#define MAXN 100000000000000000000000
int n, ai[10];
long long k;

int check(long long num)
{
    while (num)
    {
        int tmp = num % 10;
        num /= 10;
        for (int i = 0; i < n; i++)
            if (ai[i] == tmp)
                break;
            else if (ai[i] != tmp && i == n-1)
                return 0;
    }
    return 1;
}

int main()
{
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
        scanf("%d", &ai[i]);
    scanf("%lld", &k);
    k++;
    while (!check(k) && k <= MAXN)
        k++;
    k == MAXN ? printf("Impossible") : printf("%lld", k);
    return 0;
}

错误信息如下:


### Compile Error ###
./Main/main.c: In function ‘check’:
./Main/main.c:12: error: ‘for’ loop initial declaration used outside C99 mode
./Main/main.c: In function ‘main’:
./Main/main.c:24: error: ‘for’ loop initial declaration used outside C99 mode
./Main/main.c:28:30: warning: integer constant is too large for its type
./Main/main.c:28: warning: integer constant is too large for ‘long’ type
./Main/main.c:28: warning: comparison is always true due to limited range of data type
./Main/main.c:30:10: warning: integer constant is too large for its type
./Main/main.c:30: warning: integer constant is too large for ‘long’ type
./Main/main.c:30: warning: comparison is always false due to limited range of data type

 

只允许在 C99 模式下使用‘for’循环初始化声明


for 循环内不能定义。。。

把i的定义拉到外面过来,后上交,结果超时了。。。

最近老是悲催的超时。。。

 


错误信息


Test # 1.....   Accepted
 Use Time 0ms, Use Memory 36KB
Test # 2.....   Accepted
 Use Time 0ms, Use Memory 36KB
Test # 3.....   Time Limit Exceed
 Use Time 1004ms, Use Memory 32KB

The Result is Time Limit Exceed.
Terminated On Test #3
 Use Time 1004ms, Use Memory 36KB

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,