#10466: 到底哪裡記憶體區段錯誤(崩潰...


Thebigbang (喜憨外星人)

學校 : 國立臺中第一高級中學
編號 : 32618
來源 : [61.219.170.5]
最後登入時間 :
2020-07-29 20:12:21
d671. 11716 - Digital Fortress -- UVa11716 | From: [61.64.103.228] | 發表日期 : 2015-11-14 16:23

#include <stdio.h>

 

int main()

{

  char word[10100];

  int T=0;

  int N;

  int i,j;

  char ch;

  while(1){

    ch=getchar();

    if(ch == '\n')break;

    T*=10;

    T+=ch-48;

  }

  while(T--){

    i=0;

    while(1){

      word[i]=getchar();

      if(word[i] == '\n')break;

      i++;

    }

    j=1;

    while(j*j < i){

      j++;

    }

    N=j;

    if(N*N != i)printf("INVALID\n");

    else{

      for(i=0;i<N;i++){

        for(j=0;j<N;j++){

          printf("%c",word[i+j*N]);

        }

      }

      printf("\n");

    }

  }

  return 0;

}

 

不管我怎麼寫他不是吃到前面的換行

就是被Killed

不然就是記憶體區段錯誤

到底他是怎麼測的阿!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 
#11844: Re:到底哪裡記憶體區段錯誤(崩潰...


k034006 (Sine Wu)

學校 : 高雄市立高雄高級中學
編號 : 46921
來源 : [140.112.230.10]
最後登入時間 :
2024-04-08 03:46:24
d671. 11716 - Digital Fortress -- UVa11716 | From: [219.85.255.16] | 發表日期 : 2017-03-27 22:50

#include

 

int main()

{

  char word[10100];

  int T=0;

  int N;

  int i,j;

  char ch;

  while(1){

    ch=getchar();

    if(ch == '\n')break;

    T*=10;

    T+=ch-48;

  }

  while(T--){

    i=0;

    while(1){

      word[i]=getchar();

      if(word[i] == '\n')break;

      i++;

    }

    j=1;

    while(j*j < i){

      j++;

    }

    N=j;

    if(N*N != i)printf("INVALID\n");

    else{

      for(i=0;i<N;i++){

        for(j=0;j<N;j++){

          printf("%c",word[i+j*N]);

        }

      }

      printf("\n");

    }

  }

  return 0;

}

 

不管我怎麼寫他不是吃到前面的換行

就是被Killed

不然就是記憶體區段錯誤

到底他是怎麼測的阿!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

我突然發現你做了跟我一樣的事XDD

把\r一起判掉就不會RE會WA了(?)

 
#11845: Re:到底哪裡記憶體區段錯誤(崩潰...


k034006 (Sine Wu)

學校 : 高雄市立高雄高級中學
編號 : 46921
來源 : [140.112.230.10]
最後登入時間 :
2024-04-08 03:46:24
d671. 11716 - Digital Fortress -- UVa11716 | From: [219.85.255.16] | 發表日期 : 2017-03-27 22:59

#include

 

int main()

{

  char word[10100];

  int T=0;

  int N;

  int i,j;

  char ch;

  while(1){

    ch=getchar();

    if(ch == '\n')break;

    T*=10;

    T+=ch-48;

  }

  while(T--){

    i=0;

    while(1){

      word[i]=getchar();

      if(word[i] == '\n')break;

      i++;

    }

    j=1;

    while(j*j < i){

      j++;

    }

    N=j;

    if(N*N != i)printf("INVALID\n");

    else{

      for(i=0;i<N;i++){

        for(j=0;j<N;j++){

          printf("%c",word[i+j*N]);

        }

      }

      printf("\n");

    }

  }

  return 0;

}

 

不管我怎麼寫他不是吃到前面的換行

就是被Killed

不然就是記憶體區段錯誤

到底他是怎麼測的阿!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


過了~~~

別人表示"要判EOF"

 
ZeroJudge Forum