如何将数组转换为long int并返回到数组

时间:2014-12-26 23:38:22

标签: c

你得到一个整数N.找到这个数字中的数字,确切地划分N我的代码给我一个超时消息,即由于超时或超出CPU时间限制而终止(核心转储)。这是我的代码enter code here

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() 
{

    /* Enter your code here. Read input from STDIN. Print output to STDOUT */   
    int T, cnt, digits1, digits2, rem;
    long long x;
    char N[11];

    scanf("%d", &T);

    for (int i = 1; i <= T; i++)
    {
        scanf("%10c", N);
        int x = (atoll(N));
        digits1 = x;
        while (digits1 != 0)
        {
            digits1 = x/10;
            cnt++;
        }
        // char buffer[cnt + 1];
        for(int j = 1; j <= cnt; j++)
        {
            rem = x % N[j];
            if (rem == 0)
            {
                digits2++;    
            }
        }            
        printf("%d", digits2);
    }
    return 0;
}

1 个答案:

答案 0 :(得分:0)

这看起来像是家庭作业。

我会给出一些指示。

将输入字符转换为实际的intlong(或您的long long)后,请勿使用数字进行数字处理 - 特别是在基数为10时。如果您我会做那样的事情然后你可以把它留在char数组形式。不需要这个位:

while (digits1 != 0)
{
    digits1 = x/10;
    cnt++;
}

您有未初始化的值。不要假设一切都自动初始化为零。有时你很幸运......但通常你不会。

看起来不错:

for(int j = 1; j <= cnt; j++)
{
    rem = x % N[j]; //not quite right N is ASCII
    if (rem == 0)
    {
        digits2++;    
    }
}