0
100000000未満の数値を逆にする関数を作っています。例えば、入力が1234ならば4321を返します。しかし、時間制限がTLEを超えています。私のforループのブレークポイントを作ったが、理由を知らない。このコードの何が間違っているのか教えてください。単純な関数で時間制限を超過しましたC
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;
}
あなたは400MBのアレイを作っています。スタックに400MBの配列を配置すると、プログラムを実行できるシステムはほとんどありません。 –
また、競技会サイトを使用してプログラムする方法を習得しないでください。彼らはその目的のために本当に悪いです。代わりに[良い初心者の本を入手する](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)を読んでください。 –
数字の数字を取得するための@alk –