#22013: 給TLE的人


ktpss97094@gmail.com (彭星樺)


我原本補0的方法是用字串:

1.宣告str={'\0'}

2.使用sprintf數字轉字串

3.str[strlen(str)]='0' //補0

4.使用atoi字串轉數字

 

我使用這樣的方法再搭配其他寫的程式碼有碰到第二題TLE的狀況

 

解決方法為「直接使用數字」做補0的動作

把數字中每一位數字抓出來乘10的n次方

n為遞增

這樣時間上可以減少許多,我也因此AC

 

詳細步驟:

1.宣告一個sum=0,i=1

while(原本的數字a!=0)

{

    sum+=(a%10)*pow(10,i)

    a/=10  //把最後一位削掉

    i++  //次方遞增

}

#23674: Re:給TLE的人


21887032m@gmail.com (月神Youqik)


我原本補0的方法是用字串:

1.宣告str={'\0'}

2.使用sprintf數字轉字串

3.str[strlen(str)]='0' //補0

4.使用atoi字串轉數字

 

我使用這樣的方法再搭配其他寫的程式碼有碰到第二題TLE的狀況

 

解決方法為「直接使用數字」做補0的動作

把數字中每一位數字抓出來乘10的n次方

n為遞增

這樣時間上可以減少許多,我也因此AC

 

詳細步驟:

1.宣告一個sum=0,i=1

while(原本的數字a!=0)

{

    sum+=(a%10)*pow(10,i)

    a/=10  //把最後一位削掉

    i++  //次方遞增

}


OverflowError: int too large to convert to float    ???