디시인사이드 갤러리

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

갤러리 본문 영역

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

rntjr갤로그로 이동합니다. 2010.11.16 21:30:08
조회 133 추천 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 - -
230419 어플만들려면 필요한 언어가 뭐야? [8] ㅁㅁ(220.117) 11.01.12 334 0
230418 지방대 컴공은 눈앞이 깜깜.. [4] 1234567890(121.165) 11.01.12 727 0
230417 여러분, 이렇게 살면 곤란합니다. [2] 땡칠도사갤로그로 이동합니다. 11.01.12 202 0
230416 다람쥐v 횽은 봅니다. [1] 해커닭(112.216) 11.01.12 102 0
230414 프겔의 세대 교체 [14] 분당살람갤로그로 이동합니다. 11.01.12 362 0
230413 뭐여..해킹 의뢰글 어디갔어 [1] 해커닭(112.216) 11.01.12 168 0
230410 sean횽 봐바 (뇌자알관련) [1] 이쉥키야갤로그로 이동합니다. 11.01.12 123 0
230408 이쯤에서 시작하는 자기나이/연봉 ! [13] 연봉(221.155) 11.01.12 439 0
230407 ~~ 아까 소트관련 코드 질문했는데.... [3] &야치루갤로그로 이동합니다. 11.01.12 115 0
230406 HTML로 만든 페이지에서 텍스트 박스 위치가 삐뚤어져요.ㅠㅠ [2] 클라리네이갤로그로 이동합니다. 11.01.12 160 0
230405 이거 나만 몰랐던거? [7] alghost갤로그로 이동합니다. 11.01.12 185 0
230404 c++은 어떤것으로 공부해야할까요 [2] ㅎㄹㅇ(210.178) 11.01.12 168 0
230403 개발자그만둔사람들의 최후 [12] 씨발라드세요갤로그로 이동합니다. 11.01.12 470 0
230402 저 컴공과인데요, [6] 풀공돌이(175.195) 11.01.12 234 0
230401 아오 gre..유학종자들바바 [7] 르하소갤로그로 이동합니다. 11.01.12 156 0
230400 나 다크 사이드로 돌아섰음 [4] 분당살람갤로그로 이동합니다. 11.01.12 158 0
230399 c언어 난수 문제.. [11] 통감자(121.164) 11.01.12 235 0
230398 횽들 안녕? 나 여친 생겼어. [7] 개쉛기갤로그로 이동합니다. 11.01.12 205 0
230397 오늘 서버실에 오래 있는다! 설렘. [28] 해일리갤로그로 이동합니다. 11.01.12 308 0
230396 입개르 [8] alghost갤로그로 이동합니다. 11.01.12 68 0
230395 횽들 안녕? 나 여친 생겼어. [14] Gromit갤로그로 이동합니다. 11.01.12 327 0
230393 ~~~ 소트관련 질문... [5] &야치루갤로그로 이동합니다. 11.01.12 101 0
230391 관심병종자에게 관심을 주지 않습니다. [2] 빕뱟뱟갤로그로 이동합니다. 11.01.12 74 0
230389 어그로가 없으니 [1] VL갤로그로 이동합니다. 11.01.12 91 0
230387 근데 컴퓨터 싸이언스로 진로잡는 애들은 얼마나 됨? [14] 어둠의봉인자(109.84) 11.01.12 311 0
230386 개처럼만 살아라. [1] ㄴㅁㅇㄹ(121.130) 11.01.12 86 0
230385 Objective-C Tutorial 번역된거 Mayu갤로그로 이동합니다. 11.01.12 117 0
230384 아두이누가 뭔가 해서 찾아봤더니... 앗쌀(175.197) 11.01.12 436 0
230382 디씨에 왜이렇게 바보들이 많아졌어?? [5] Minryu갤로그로 이동합니다. 11.01.12 228 0
230381 생활패턴이 다시 꼬여가는 것 같다 [3] 석류와막창(110.15) 11.01.12 107 0
230380 형들 공부할거 추천좀 [1] 형들아(119.70) 11.01.12 65 0
230379 근데 요즘도 c/c++ 을 가르치긴 하냐? 공부하는 넘들도 있긴 있구? [18] 앗쌀(175.197) 11.01.12 513 0
230378 취미로 배우는 중인데 [3] ㅁㅁ(220.117) 11.01.12 103 0
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
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2