디시인사이드 갤러리

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

갤러리 본문 영역

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

rntjr갤로그로 이동합니다. 2010.11.16 21:30:08
조회 132 추천 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 - -
230377 내가 지금 복수전공을 할까 생각중인데 괜찮은 생각인지 모르겠습니다. [3] 농농이랑마군갤로그로 이동합니다. 11.01.12 122 0
230376 파이썬으로 다룬 집단지성 프로그래밍이라는 책을 보고있는데.. [3] 파이썬입문(211.110) 11.01.12 186 0
230373 떡밥 [3] 풋사과1갤로그로 이동합니다. 11.01.12 88 0
230372 현직 종사 횽들 나 어떻하지?ㅠㅠ [25] 효옹~(121.162) 11.01.12 337 0
230371 요즘에도 잉여인터넷의 엔프로텍트는 존나게 설치고 돌아다닌다며? ㅇㅇ(14.61) 11.01.12 107 0
230370 근데 화력은 플밍갤이 쎌거같은데 [5] 풋사과1갤로그로 이동합니다. 11.01.12 289 0
230369 님들빠염 DCode(121.140) 11.01.12 72 0
230366 폭탄문자프로그램어케짜나여??? [3] 앗 슈발 꿈(125.178) 11.01.12 155 0
230365 오랫만에 어둠의 경로를 검색하고 있는대 [1] [성대아싸]갤로그로 이동합니다. 11.01.12 122 0
230363 달팽이를 왜이리 복잡하게 하냐? [3] new gay[max](183.105) 11.01.12 216 0
230362 야 휘밤 드디어 자바 웹플랫폼과 안드로이드 어플 수련이 끝났다. [1] 속결자갤로그로 이동합니다. 11.01.12 110 0
230360 디시에 웹기반 바이러스잇다든대 [3] 코주부갤러리(175.214) 11.01.12 88 0
230359 형들 저가 방금 안드로이드 어플을 만들어써요 어때요 [3] 이바보갤로그로 이동합니다. 11.01.12 155 0
230358 아직도 agp슬롯으로 [3] 이모군(1.225) 11.01.12 104 0
230357 대학교가기전애 c랑자바해놓으면편하갯져? [6] 코주부갤러리(175.214) 11.01.12 154 0
230356 뻘글이긴한데요.. 진로걱정... [4] 복학생(116.36) 11.01.12 92 0
230355 추상 클래스를 상속하면 추상 클래스가 되는 건가요? [3] ㅁㄴㅇㄹ(210.107) 11.01.12 200 0
230354 C 이거 소설같은 C 무료 인터넷 책으로 봐도 되나요? [5] 그냥잉여(110.47) 11.01.12 260 0
230353 잠자기 전 마지막 질문! [8] 질문합니다.(180.66) 11.01.11 83 0
230352 Vrml 어려운감요? [8] dd(121.137) 11.01.11 89 0
230351 제가 컴퓨터가 없는데 새로 하나 장만해야겠죠? [10] 질문합니다.(180.66) 11.01.11 115 0
230350 밑에 "미래에는 이랬으면 좋겠다 " 설명좀 부탁드려요 [15] 그냥잉여(110.47) 11.01.11 112 0
230349 xx대 컴소과 11학번입니다. 질문드려요. [18] 질문합니다.(180.66) 11.01.11 238 0
230347 달팽이배열, 제대로 해결이 안되서 어려워요 ㅠㅠ 결과는 나와요 [6] 통감자(114.203) 11.01.11 134 0
230346 영어, 수학, 학원에 대한 개인적인 의견. [5] ㅈㅈ(24.99) 11.01.11 148 0
230345 컴퓨터공학은 C, 프로그래밍은 파이썬으로 시작하세요. [1] nRESET갤로그로 이동합니다. 11.01.11 184 0
230342 NHN 초봉어떤지아시는분? [2] 씨발라드세요갤로그로 이동합니다. 11.01.11 2186 0
230340 파이썬 입문 하려는데 책 필요함??? [6] ㅇㅇ(118.47) 11.01.11 279 0
230338 맥주가 떨어져간다 [2] DMW(125.138) 11.01.11 95 0
230337 1001010010 1001 00101001 비우그라갤로그로 이동합니다. 11.01.11 77 0
230336 영어가 왜 중요하냐면 [3] 르하소갤로그로 이동합니다. 11.01.11 179 0
230335 손코딩은 주로 어떤식으로 하는거야??? [9] FOX(118.47) 11.01.11 283 0
230334 테라를 깔아서 함해봤다 꿀레갤로그로 이동합니다. 11.01.11 65 0
230333 변수형_불일치로_인한_대박류_최강.JPG [6] 부관양반갤로그로 이동합니다. 11.01.11 208 0
230332 현업 개발자 분들에게.. 영어에 대해 질문드려요 [7] 파돌이(118.130) 11.01.11 189 0
230329 이진수 시계 [2] 때릴꺼야?(119.67) 11.01.11 186 0
230328 이거 설명좀 [21] 파돌이(118.130) 11.01.11 132 0
230327 뒤에보니까 수학이 중요하다 어쨌다 하는데 [27] (112.158) 11.01.11 273 0
230326 배열말고 그냥 변수 여러개 선언했을때 메모리 간격생기는이유 뭔가요? [11] 씨신동갤로그로 이동합니다. 11.01.11 165 0
230325 으아 =_=.. 열혈강의C 달팽이배열 ㅠㅠㅠ [4] 통감자(114.203) 11.01.11 348 0
230324 정보보안 전문가 공부 말입니당.. 금전적 문제가. ㅠㅠ (꽤 깁니다... [33] 으헝ㅁㄴㅇㄹ(121.140) 11.01.11 316 0
230323 횽들 파이썬 부터 입문하는게 초보자 한테 좋아? [11] FOX(118.47) 11.01.11 274 0
230322 TCP/IP 소켓프로그래밍 좀 쉬운책좀 없나 [4] 영광의비석갤로그로 이동합니다. 11.01.11 187 0
230320 테라 풀옵 돌리려면 컴퓨터 얼마짜리 맞줘야 되냐능 [4] DMW(125.138) 11.01.11 247 0
230319 xchg 코드로 swap 을 구현하는 인간이 의외로 많네? [14] 앗쌀(124.137) 11.01.11 587 0
230318 요즘 진로 질문하는 글이 많이 보이는데 [1] 할리의본링갤로그로 이동합니다. 11.01.11 184 0
230317 C++책 횽들 입문서 추천 좀 해주셈 [18] dd(118.47) 11.01.11 260 0
230316 프로그래밍외의 고민이지만 아저씨들 인생선배로써 어떻게 해야할지 도움좀줘요 [18] 하앍하앍(123.199) 11.01.11 220 0
230315 너희들 버거헌터나 크라제 먹을 때 [2] 분당살람갤로그로 이동합니다. 11.01.11 174 0
230314 플밍책 중고로 파려고 하는데 얼마가 적당함?? [5] 늅늅늅(118.47) 11.01.11 97 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2