U E D R , A S I H C RSS

Power Of Cryptography/��호

- 수정. 한가지 오류를 바로 잡�. "/10" 으로 나눔 연산.


쿡... �거운 공통 수학 시간�군.


p를 1834567891242341235423542542451234145678551475585744로 가정

k = log(n root string:p)
// p를 string으로 받�

= 1/n * log(string:p)
// n� 밖으로 낸다.

= 1/n * ( log( 10� (string:p� �릿수)승) + log((x) = string:p� 맨 첫숫�와 �번째 숫�를 ���리로 한 것� 반올림. -> 예제�서 1.8) )
// 반올림� ceil, floor 함수로 효율성 있게 구성한다.
// 여기서 문�를 숫�로 변경하고 log10 함수를 사용한다.
// 반올림 하지 않고 바로 log10� 취해� �.

= 1/n * ( �릿수 + log(x) )
= 계산 �.
// 반올림� 하고 정수로 �스팅한다.


정수형�기 때문� �것� 맞아떨어�.
설령 실수형�래� 로그로 �해 근사값� 맞아 떨어�. (반올림 하면�)

~cpp 
// 개략 �� 코딩으로 컴파�러가 없어 �러를 잡지 못했�.
// 수학 함수는 func(). n, p를 받아들�고 정수 k를 반환함.
// 6시 44분 코딩 시작 // 6시 57분 �.

#include <stdio.h>
#include <string.h>
#include <math.h>

int func(char *p, int n){
        double ret_buf;
        int ret;
        int t = strlen(p)-1;
        double buf;
        char p_buf[3];

        sscanf(p_buf, "%2c\0", p);          // 앞� � �리만 취한다.
        buf = log10((double)atof(p_buf)/10);   // 첫 ��리를 log취한다.


        ret_buf = (buf+t)/n;

        if(ret_buf >= (ceil(ret_buf)+floor(ret_buf))/2)     // 반올림. 올림+내림/2보다 �거나 같� 경우
                ret_buf = (int)ret_buf + 1;             // 올림.

        ret = (int)ret_buf;         // 내림�경우 여기서 저절로 내린다.

        return ret;
}
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:24:01
Processing time 0.0450 sec