디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

팩떡밥으로 니들 컴 성능 test 함 해보자..

rntjr갤로그로 이동합니다. 2010.11.16 21:30:08
조회 131 추천 0 댓글 3










난 


$ time ./a.out
\'2846259680917054518906413212119868890148051401702799230794179994274411340003764443772990786757784775815884062142317
52883004233994015351873905242116138271617481982419982759241828925978789812425312059465996259867065601615720360323979
263287367170557419759620...........................

real    1m5.390s
user    1m5.184s
sys     0m0.168s


이렇게 나왔다..


자 ..  니들은???   


아래 소스 컴파일


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


#define MAX_BUFF_SIZE   50000000

void deohagi(char *, char *, char *);
void bbegi(char *, char *, char *);
void gobhagi(char *, char *, char *);
void nanugi(char *, char *, char *);
void fac(char *, char *);

void outfile(char *, char *, char *, char);


char *A;
char *B;
char *C;
char *D;
char *E;
char *F;
char *G;
char *H;
char *I;
char *J;
char *K;
char *L;
char *M;
char *N;




main()
{
  char *a;
  char *b;
  char c;
  char *result;
  int i;

  a = (char *)malloc(MAX_BUFF_SIZE);
  b = (char *)malloc(MAX_BUFF_SIZE);
  result = (char *)malloc(MAX_BUFF_SIZE);


  A = (char *)malloc(MAX_BUFF_SIZE);
  B = (char *)malloc(MAX_BUFF_SIZE);
  C = (char *)malloc(MAX_BUFF_SIZE);
  D = (char *)malloc(MAX_BUFF_SIZE);
  E = (char *)malloc(MAX_BUFF_SIZE);
  F = (char *)malloc(MAX_BUFF_SIZE);
  G = (char *)malloc(MAX_BUFF_SIZE);
  H = (char *)malloc(MAX_BUFF_SIZE);
  I = (char *)malloc(MAX_BUFF_SIZE);
  J = (char *)malloc(MAX_BUFF_SIZE);
  K = (char *)malloc(MAX_BUFF_SIZE);
  L = (char *)malloc(MAX_BUFF_SIZE);
  M = (char *)malloc(MAX_BUFF_SIZE);
  N = (char *)malloc(MAX_BUFF_SIZE);




 cont:

  for(i=0;i<MAX_BUFF_SIZE;i++){
    a[i] = b[i] = result[i] = \'\\0\';
  }



  strcpy(a, "10000");
  c = \'!\';
  goto rntjr;







  printf("input number a->");
  gets(a);

  if(strlen(a) > MAX_BUFF_SIZE){
    printf("input error 첨부터 다시..\\n");
    goto cont;
  }

  printf("연산방식 입력( + - * / ! )-> ");
  gets(result);
  c = result[0];
  strcpy(result, "0");
  if(c != \'+\' && c != \'-\' && c != \'*\' && c != \'/\' && c != \'!\'){
    printf("input error 첨부터 다시..\\n");
    goto cont;
  }

  if(c != \'!\'){
    printf("input number b->");
    gets(b);

    if(strlen(b) > MAX_BUFF_SIZE){
      printf("input error 첨부터 다시..\\n");
      goto cont;
    }
  }



 rntjr:
  //  printf("값을 입력해라.. ex)1000 + 1000) 연산은 + - * / !\\n");
  //  scanf("%s %c %s", a, &c, b);
  //  getchar(); // 마지막 엔터 읽어서 없에기..

  if(c != \'+\' && c != \'-\' && c != \'*\' && c != \'/\' && c != \'!\'){
    printf("input error 연산자, 첨부터 다시..\\n");
    goto cont;
  }
  if(strlen(a) > MAX_BUFF_SIZE){
    printf("input error A수 , 첨부터 다시..\\n");
    goto cont;
  }
  if(strlen(b) > MAX_BUFF_SIZE){
    printf("input error 뒷수,  첨부터 다시..\\n");
    goto cont;
  }

  if(c == \'+\'){
    deohagi(a, b, result);
    printf("\'%s\'\\n",result);
    //    outfile(a, b, result, c);
  }else if(c == \'-\'){
    bbegi(a, b, result);
    printf("\'%s\'\\n",result);
    //    outfile(a, b, result, c);
  }else if(c == \'*\'){
    gobhagi(a, b, result);
    printf("\'%s\'\\n",result);
    //    outfile(a, b, result, c);
  }else if(c == \'/\'){
    nanugi(a, b, result);
    printf("\'%s\'\\n",result);
    //    outfile(a, b, result, c);
  }else if(c == \'!\'){
    fac(a, result);
    printf("\'%s\'\\n",result);
    outfile(a, "", result, c);
  }

 KIN:
  printf(" \\n");
exit(0);
  gets(result);
  c = result[0];
  if(c == \'2\'){
    exit(0);
  }else if(c == \'1\'){
    goto cont;
  }else{
    printf("똑바로 입력해라\\n");
    goto KIN;
  }

}

// 0: 48, 9:57
void deohagi(char *a, char *b, char *result)
{
  int i;
  int lenA, lenB, lenC;
  int smallRst, smallPa;
  char *temp;

  temp = A;


  smallRst = smallPa = 0;

  lenA = strlen(a)-1;
  lenB = strlen(b)-1;
  lenC = 0;

  for(i=0;i<MAX_BUFF_SIZE;i++, lenA--, lenB--){
    if(lenA > -1 && lenB > -1){
      smallRst = (a[lenA] - 48) + (b[lenB] - 48) + smallPa;
      smallPa = smallRst>=10 ? 1 : 0 ;
      smallRst = smallRst % 10;
      temp[i] = smallRst + 48;
    }else{
      if(lenA > -1){
        smallRst = (a[lenA] - 48) + smallPa;
        smallPa = smallRst>=10 ? 1 : 0 ;
        smallRst = smallRst % 10;
        temp[i] = smallRst + 48;
      }else if(lenB > -1){
        smallRst = (b[lenB] - 48) + smallPa;
        smallPa = smallRst>=10 ? 1 : 0 ;
        smallRst = smallRst % 10;
        temp[i] = smallRst + 48;
      }else{
        temp[i] = smallPa + 48;
        temp[i+1] = \'\\0\';
        break;
      }
    }//  if(lenA > -1 && lenB > -1){
  }

  if(smallPa)
    i++;

  for(lenC=0;i>=0;i--,lenC++){
    result[lenC-1] = temp[i];
  }
  result[lenC] = \'\\0\';

}


void gobhagi(char *a, char *b, char *result)
{
  int i,j;
  int lenB;
  char *aa;
  char *bb;

  aa = B;
  bb = C;



  strcpy(aa, "0");
  strcpy(bb, a);
  lenB = strlen(b) -1;

  for(i=0;lenB > -1;i++, lenB--){
    j = b[lenB] - 48;

    for(;j>0;j--){              /*  */
      deohagi(aa, bb, result);
      strcpy(aa, result);
    }
    strcat(bb,"0");
  }

}


void bbegi(char *a, char *b, char *result)
{
  int i;
  int lenA, lenB, lenC;
  int smallRst, smallPa;

  int isMinus=0;
  char *temp;
  char *aa;
  char *bb;
  char *p, *q;


  aa = D;
  bb = E;
  temp = F;




  smallRst = smallPa = 0;

  lenA = strlen(a)-1;
  lenB = strlen(b)-1;
  lenC = 0;

  strcpy(aa, a);
  strcpy(bb, b);

  if(lenA < lenB){
    isMinus = 1;
  }else if(lenA == lenB){
    if(a[0] < b[0]){
      isMinus = 1;
    }
  }

 min:
  if(isMinus){
    strcpy(temp, aa);
    strcpy(aa, bb);
    strcpy(bb, temp);
    lenA = strlen(aa)-1;
    lenB = strlen(bb)-1;
  }

  for(i=0;i<MAX_BUFF_SIZE;i++, lenA--, lenB--){
    if(lenA > -1 && lenB > -1){
      smallRst = (aa[lenA] - 48) - (bb[lenB] - 48) - smallPa;
      smallPa = 0;
      if(smallRst < 0){
        smallRst += 10;
        smallPa = 1;
      }
      temp[i] = smallRst + 48;
    }else{
      if(lenA > -1){
        smallRst = (aa[lenA] - 48) - smallPa;
        smallPa = 0;
        if(smallRst < 0){
          smallRst += 10;
          smallPa = 1;
        }
        smallRst = smallRst % 10;
        temp[i] = smallRst + 48;
      }else if(lenB > -1){
        smallRst = (bb[lenB] - 48) - smallPa;
        smallPa = 0;
        if(smallRst < 0){
          smallRst += 10;
          smallPa = 1;
        }
        smallRst = smallRst % 10;
        temp[i] = smallRst + 48;
      }else{
        if(smallPa){
          smallPa = 0;
          isMinus = 1;
          goto min;
        }
        //      temp[i] = smallPa + 48 ;
        temp[i] = \'\\0\';
        break;
      }
    }//  if(lenA > -1 && lenB > -1){
  }

  lenC=0;
  if(isMinus){
    result[0] = \'-\';
    lenC += 2;
    i--;
  }

  for(;i>=0;i--){
    result[lenC-1] = temp[i];
    lenC++;
  }
  result[lenC] = \'\\0\';

  q = p = result;
  while(*p){
    if(*p == \'-\'){
      p++;
      q++;
    }else if(*p == \'0\'){
      p++;
    }else{
      strcpy(q, p);
      break;
    }
  }


}


void nanugi(char *a, char *b, char *result)
{
  char *aa;
  char *bb;
  char *cc;
  char *temp;
  char *temp1;

  aa = G;
  bb = H;
  cc = I;
  temp = J;
  temp1 = K;




  strcpy(aa, a);
  strcpy(bb, b);
  strcpy(cc, "0");

  while(1){
    memset(temp1, 0, MAX_BUFF_SIZE);
    memset(temp, 0, MAX_BUFF_SIZE);
    bbegi(aa, bb, temp);
    if(temp[0] != \'-\' ){
      if(temp[0] == \'0\'){
        deohagi(cc, "1", temp1);
        break;
      }

      strcpy(aa, temp);
      deohagi(cc, "1", temp1);
      strcpy(cc, temp1);
    }else{
      break;
    }
  }

  strcpy(result, temp[0] != \'-\' ? temp1 : cc);
  if(temp1[0] != \'0\' || temp1[0] != \'-\'){
    strcat(result, " 나머지 ");
    strcat(result, temp[0] == \'-\' ? aa : temp);
  }




}

void fac(char *a, char *result)
{
  char *aa;
  char *bb;
  char *rst;

  aa = L;
  bb = M;
  rst = N;


  strcpy(aa, a);
  strcpy(rst, a);
  do{
    bbegi(aa, "1", bb);
    /* printf("%s\\n", bb); */
    strcpy(aa,bb);
    gobhagi(rst, bb, result);
    strcpy(rst, result);




  }while(strcmp(bb, "2"));

}



void outfile(char *a, char *b, char *c, char d)
{
  FILE *fp;

  fp = fopen("infile.dat", "w");
  fprintf(fp,"%s %c %s", a, d, b);
  fclose(fp);

  fp = fopen("outfile.dat", "w");
  fprintf(fp,"%s", c);
  fclose(fp);
}

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 힘들게 성공한 만큼 절대 논란 안 만들 것 같은 스타는? 운영자 24/06/10 - -
230564 바람의나라핵 보는데 웃겨 죽겠다 ㅋㅋㅋㅋ [2] 파돌이(124.54) 11.01.13 563 0
230560 미안. 소리지르고 싶은데 와 세상 그 어디다가도 말을 못하겠네. [1] DCode(121.140) 11.01.13 122 0
230557 어휴 컴터 가까스로 조립 ㅎㄷㄷㄷ [5] [성대아싸]갤로그로 이동합니다. 11.01.13 198 0
230556 윈도우 7 정품 사서 쓰면 병신임? 여러가지 질문좀 [10] wonC갤로그로 이동합니다. 11.01.13 281 0
230555 토목과님 꼭 전과하세요 [1] 농농이랑마군갤로그로 이동합니다. 11.01.13 97 0
230554 쳇, 나 없는 사이에 재밌는 놈이 왔다갔군.... [1] 땡칠도사갤로그로 이동합니다. 11.01.13 116 0
230553 으흠.. 고생하고있는 파이썬 코드 다 올려버리겠음.. 횽들 ㅋㅋ [8] 파이썬입문(211.110) 11.01.13 169 0
230550 카라 얘네들 엔화맛좀 보더니 표정이 달라졌네 [1] 전어(218.51) 11.01.13 129 0
230549 파이썬횽들 또 질문! ㅋㅋ [12] 파이썬입문(211.110) 11.01.13 138 0
230548 자기전에 바탕화면 인증 [1] DMW(125.138) 11.01.13 128 0
230546 컴공에서 진로 어디어디갈수잇어??!? [2] (121.173) 11.01.13 216 0
230545 훃들 정보보안전문가 될려면 뭐뭐 배워두는게 좋음? [2] HellSsook갤로그로 이동합니다. 11.01.13 122 0
230544 여성부 개새끼 [2] SODmaster(116.37) 11.01.13 122 0
230543 xss 말고 쿠키값 가져올수있는방법 .ask [2] 시방새1갤로그로 이동합니다. 11.01.13 145 0
230541 횽들 보안전문가가 되려면 죽을만큼힘들어!??! [3] (121.173) 11.01.13 156 0
230540 아.. 심심해. [2] ㅁㄴㅇㄹ(175.214) 11.01.13 57 0
230538 C언어 하루종일 공부하면 몇일이면 되나요? [5] 데일링갤로그로 이동합니다. 11.01.13 273 0
230536 jazzlib 라이센스.. [4] fff(119.193) 11.01.13 1006 0
230535 c90은 씨구공? 씨구십? 씨구영? 씨아홉공? [5] 비우그라갤로그로 이동합니다. 11.01.12 163 0
230534 이만 퇴갤 [2] 토목과(118.130) 11.01.12 56 0
230533 근데 프로그래밍은 사양많이 안가리지 [3] aa(220.117) 11.01.12 129 0
230532 형들 게임은 마약이래 ㅜㅡ [7] ~*(121.175) 11.01.12 161 0
230531 프갤에는 실력자가 없는듯 [32] 토목과(118.130) 11.01.12 441 0
230530 어제에이은 인생상담... 아저씨들 해줘용 나 어케해야되나요? ㅜㅜ [3] 하앍하앍(123.199) 11.01.12 94 0
230529 컴공전공 질문 [9] 토목과(118.130) 11.01.12 198 0
230527 횽들 자기 컴퓨터 언제 처음 썻는지 알 수 잇어??? [2] ㅁㄴㅇㄹ(119.70) 11.01.12 118 0
230526 프갤은 좀 좌파성향인듯? [21] 토목과(118.130) 11.01.12 302 0
230525 형들 배열 질문좀 ㅜㅜ [13] 뻑킹배열(61.73) 11.01.12 118 0
230524 여자들이 노래방에서 듣기싫은 노래 1위. [3] 부끄곰갤로그로 이동합니다. 11.01.12 203 0
230522 안드로이드 어플에 [1] adsd(121.144) 11.01.12 118 0
230520 프겔 치맥갑 [1] DMW(125.138) 11.01.12 200 0
230519 스키장을 가려고하는데... [1] 씨발라드세요갤로그로 이동합니다. 11.01.12 76 0
230518 프로그래밍갤 멋지다 [1] 지나가던(112.158) 11.01.12 114 0
230517 프로그래밍 퀴즈 사이트 알려주세요. [2] Scott.갤로그로 이동합니다. 11.01.12 101 0
230516 우리 과 난리날듯.... 땡칠도사갤로그로 이동합니다. 11.01.12 226 0
230515 횽들 나 다시 파이썬 물어보러 왔어!! [10] 파이썬입문(211.110) 11.01.12 175 0
230514 오늘 나온 이야기 (여자 관련) [4] 분당살람갤로그로 이동합니다. 11.01.12 161 0
230513 야 안드로이드 어플 만들어서 통화내역이랑 통화시간 좀 빼올라카면 [4] 속결자갤로그로 이동합니다. 11.01.12 276 0
230512 최근 몇달간 공부를 하나도 안한거같다. [6] ㄴㅁㅇㄹ(121.130) 11.01.12 153 0
230511 용어질문이요~ 그.. 어떤 작업을 하는데 존나 부담이 가는 작업을 뭐라고 [9] 용어강간(124.54) 11.01.12 147 0
230510 나 제대로 공부하고있는거맞음? [2] ㅁㅁ(116.126) 11.01.12 138 0
230509 윈도우 기반 소켓플밍책은 없는거야..? [14] 아오(121.139) 11.01.12 168 0
230508 키젠같은 건 왜 백신이 바이러스로 인식하는거임? [3] 갤러리갤로그로 이동합니다. 11.01.12 326 0
230506 와이어샤크로 원하는타겟 질문.ask [5] 시방새1갤로그로 이동합니다. 11.01.12 152 0
230505 너희들은 마법을 믿니? [6] 쿨럭(124.153) 11.01.12 131 0
230504 IE 보안옵션 [2] ㄴㅁㅇㄹ(121.130) 11.01.12 119 0
230502 와이어샤크 질문.ask [2] 시방새1갤로그로 이동합니다. 11.01.12 258 0
230501 액티브개새끼.. [2] 개■새■끼갤로그로 이동합니다. 11.01.12 134 0
230499 어릴적엔 막 별짓을 다했는데. [16] ㄴㅁㅇㄹ(121.130) 11.01.12 291 0
230497 배고파서 코딩이 안된다 ㅡㅡ) [3] 땡칠도사갤로그로 이동합니다. 11.01.12 160 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2