디시인사이드 갤러리

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

갤러리 본문 영역

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

rntjr갤로그로 이동합니다. 2010.11.16 21:30:08
조회 138 추천 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
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 현역으로 군대 안 간게 의아한 스타는? 운영자 25/06/30 - -
AD 휴대폰 바꿀까? 특가 구매 찬스! 운영자 25/07/02 - -
347502 패커를 손대봤는데 정..말로 어려운거같다. *갤로그로 이동합니다. 13.02.28 47 0
347501 난 일하는거 좋은데 Yo! man people(211.189) 13.02.28 24 0
347500 난 배고프면 잠이 안온다... ㅋㄱ(183.96) 13.02.28 32 0
347497 메인 스레드가 뭐시기요....... [5] 야요이갤로그로 이동합니다. 13.02.28 119 0
347496 스레드 떡밥이라면 OkJsp에서 피 터지게 싸우지않았냐? 생물학(175.119) 13.02.28 50 0
347495 수학과 출신이 왜 컴공에서 교수질하냐 [3] ㅊㅊㅌㄹㅇ(210.183) 13.02.28 203 0
347494 금,토 다 나오랜다.... [3] 야요이갤로그로 이동합니다. 13.02.28 77 0
347493 이거 뭐 때문에 그러는지 아시는분? [1] ㅇㅇ(168.126) 13.02.28 88 0
347492 오늘은 싱글스레드 떡밥이냐 c(175.208) 13.02.28 30 0
347491 만나실 아자씨들 연락주세요♡ 黑猫갤로그로 이동합니다. 13.02.28 83 0
347490 한 페이지를 그대로 메모장에서 만들때 가장쉬운방법이뭐임? [1] 씹선비(183.101) 13.02.27 54 0
347488 립카페 가성비에 대해 ㅇㅁㅎㅇㅀ(101.101) 13.02.27 1858 0
347487 C# vs Java [1] ㅁㅁ(117.111) 13.02.27 85 0
347485 winapi 다이얼로그 만들고 그안에 에딧컨트롤클릭하면 꺼져요.. [3] 이힝(118.39) 13.02.27 47 0
347483 도와죠 실행이 안돼 [1] (14.43) 13.02.27 50 0
347481 난 모바일 프로그래밍 존나 싫은데 회사서 하라고 하면 어케되냐? [5] ㅁㅁ(211.246) 13.02.27 198 2
347479 형들 웹프로그래머가 꿈인데 [11] 볍신임(112.158) 13.02.27 241 0
347478 횽아들 bluetooth chat 예제 수정하는거 조언좀..ㅠ 냐냐얌(220.90) 13.02.27 36 0
347477 횽들~ C++에서 auto 키워드에 대해 궁금한게 있어~~~~ [6] 횽들(115.136) 13.02.27 98 0
347475 형들아 임베디드,전기전자 관련 책좀 추천해줭 [1] 형들책(114.203) 13.02.27 85 0
347472 안드로이드 어플 사용자한테 메세지 날릴수 있어? 푸시알림 안쓰고 노네임(175.208) 13.02.27 76 0
347471 비베쟁이 새끼들 어떡해 해야함? [3] 111(121.164) 13.02.27 100 0
347470 mysql 데이터 자릿수는 뭘의미함? [11] 작성자(175.215) 13.02.27 106 0
347469 Game coding complete 번역판 삽니다 ㅠㅠ 책사요!(203.226) 13.02.27 35 0
347467 운영체제 어디 까지 암? 111(121.164) 13.02.27 48 0
347466 mfc 종자 는 없냐 ? mfc(121.164) 13.02.27 42 0
347465 사이트 디자인 ㅍㅌㅊ? [12] 서버짱짱맨(121.181) 13.02.27 210 1
347464 보안종자들 참 많아 . 보안쓰레기(121.164) 13.02.27 115 0
347463 프로그래밍 쪽으로 취업 할라면 [1] ㅂㅂ(121.164) 13.02.27 100 0
347462 vector 에 대해 잘아시는분 있나요? [10] MFC 어렵당(119.202) 13.02.27 144 0
347461 형아는 애정이 잇을수록 강하게 깐다 돌대갈(211.36) 13.02.27 86 0
347459 질문잇다 다들봐라 [1] 앙망(203.226) 13.02.27 63 0
347455 캐주얼 벨트는 따로 있음? [2] ㅋㄱ(183.96) 13.02.27 58 0
347453 넷마블 고객센터 갔다 왔다. 이모군(175.114) 13.02.27 70 0
347450 head first 책말인데 [2] ㄱㄷㄱ(61.41) 13.02.27 60 0
347449 아무도 답해주지않은 winapi 리치에디트 질문 [2] 이힝(118.39) 13.02.27 42 0
347446 형들 자바 배우면요.. [3] 자바(121.164) 13.02.27 97 0
347445 진보ㆍ보수, 위험 처리 뇌영역 달라 [2] 에어로홍갤로그로 이동합니다. 13.02.27 88 0
347443 유전자와 이념‥보수·진보 체질 따로 있나? 에어로홍갤로그로 이동합니다. 13.02.27 89 0
347442 자동로그인 질문좀... [21] 햄버거(124.49) 13.02.27 201 0
347441 부산경찰 귀요미 에어로홍갤로그로 이동합니다. 13.02.27 45 0
347440 형들 파이썬 질문하나만.. [6] 11(1.245) 13.02.27 115 0
347439 근데 디아블로3에서 파티플할때 자기아이템만 떨궈서 보이는거 있잖아 [7] f(112.171) 13.02.27 101 0
347438 외롭다 ㅠ [1] 마나아라(210.97) 13.02.27 34 0
347436 안드로이드배울때 C언어 익혀두면 도움되나요?? [2] (112.171) 13.02.27 93 0
347435 DB 어떻게 발음하냐?? [5] ㄱㄷㄱ(61.41) 13.02.27 99 0
347434 벨브 코퍼레이션에 대한 글을 읽는데 이런 회사가 있다는게 신기하다 [3] ㅇㅇ(58.102) 13.02.27 68 1
347433 내가 잘몰라서그런대 윈도폰은 왜뜨지를못하는거냐? [5] (211.237) 13.02.27 86 0
347432 cliff jumps 에어로홍갤로그로 이동합니다. 13.02.27 42 0
347431 횽들 리눅스에 mysql깔다 궁금한게 있는데 perl-dbi를 왜깔아? [1] 33맨(115.144) 13.02.27 50 0
뉴스 에픽하이 타블로, “내가 뭘 잘못했길래”…드디어 밝혀진 상상 초월 전생 디시트렌드 07.05
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2