大一新生的c语言oj题1

下面这个代码为什么在oj平台上提交只能通过40%的样例,真是想破脑袋也没想出来。谢谢各位了。

img

img

img

#include<stdio.h>
long long arr[1000000];
int main()
{
    int n;
    while(~scanf("%d",&n)){
    for(int i=0,j=1;i<n;j++)
    {
        if(j%6==0||j%10==6||(j%100-j%10)/10==6||(j%1000-j%100)/10==6)
        {arr[i]=j;
        i++;}
    }
    
    printf("%lld\n",arr[n-1]);}
    return 0;
}


#include <stdio.h>

long long get_luck_number(int n);

int main()
{
    int n;
    while (scanf("%d", &n) != EOF)
    {
        printf("%lld\n", get_luck_number(n));
    }
}

long long get_luck_number(int n)
{
    long long luck_number = 1;
    int count = 0;
    for (luck_number = 1; count < n; luck_number++)
    {
        if (luck_number % 6 == 0)
        {
            count++;
        }
        else if (luck_number % 10 == 6)
        {
            count++;
        }
        else if ((luck_number % 100 - luck_number % 10) / 10 == 6)
        {
            count++;
        }
        else if ((luck_number % 1000 - luck_number % 100) / 100 == 6)
        {
            count++;
        }
        else if ((luck_number % 10000 - luck_number % 1000) / 1000 == 6)
        {
            count++;
        }
        else if ((luck_number % 100000 - luck_number % 10000) / 10000 == 6)
        {
            count++;
        }
        else if ((luck_number % 1000000 - luck_number % 100000) / 100000 == 6)
        {
            count++;
        }
    }
    return --luck_number;
}

1<=n<=1000000
写这个还挺麻烦的