在简单函数C中超出时间限制错误

时间:2017-02-19 12:29:43

标签: c function

我正在制作一个反转小于100000000的数字的功能。例如,如果输入是1234,那么它应该返回4321.但是我的时间限制超过了TLE,我已经制作了我的for循环的断点但是没有不知道为什么。你能告诉我这段代码有什么问题吗?

int reverse(int n){
    int i, j=1, d[100000000]={0}, rev=0;  

    for(i=10;  ;i*10){
        if(n%i==n){
            d[j]=(n%i)/(i/10);
            break;
        }
        d[j++]=(n%i)/(i/10);
    }

    for(j=1; ;j++){
        rev+=(d[j]*(i/10));
        i/=10;
        if(i==10)
            break;
    }
 return rev;
}

int main(){
    printf("%d",reverse(321));
    return 0;
}

1 个答案:

答案 0 :(得分:1)

使用数字如何工作的基本知识:放置价值。如果使用%运算符从数字中提取最低有效数字,则可以构建反转数字。试试这个:

int reverse(int n)
{
        int result = 0;

        while ( n > 0 )
        {
                result = result * 10 + (n % 10);
                n /= 10;
        }
        return result;
}