>  기사  >  프로그래머는 어떻게 어려운 문제를 해결하고 여신의 QQ 계정을 얻나요?

프로그래머는 어떻게 어려운 문제를 해결하고 여신의 QQ 계정을 얻나요?

小云云
小云云원래의
2017-11-07 11:50:252258검색

여신을 만나서 내 외모로 마음을 사로잡을 수 있을 것 같아 솔선해서 여신에게 QQ 계정을 요청했는데, 의외로 여신님이 저에게 질문을 주신 것 같았어요. 정말 프로그래머들 사이의 대회였습니다. 주제는 다음과 같습니다.
여신이 일련의 숫자(QQ 숫자가 아님)를 주었습니다. QQ 숫자는 다음 규칙에 따라 찾을 수 있습니다. 먼저 첫 번째 숫자를 삭제한 다음 두 번째 숫자를 숫자 문자열 끝에 있는 이 숫자 문자열에 넣고 세 번째 숫자를 삭제하고 네 번째 숫자를 숫자 문자열 끝에 넣습니다... 이 루프에서는 마지막 숫자가 남을 때까지 다음을 삭제합니다. 마지막 숫자, 지금 삭제 순서를 따르세요. 이 숫자들이 합쳐져 여신의 QQ 번호가 됩니다.

프로그래머는 어떻게 어려운 문제를 해결하고 여신의 QQ 계정을 얻나요?

여신이 일련의 숫자 631758924를 주었습니다. 이제 우리가 해야 할 일은 이 숫자에서 여신의 QQ 번호를 알아내는 것입니다. 예를 들어 9개의 카드를 사용하여 이 9를 쓰는 것입니다. 숫자를 각각 계산해서 문제의 진행과정을 시뮬레이션할 수도 있고, 펜을 사용하여 하나씩 계산할 수도 있습니다~~~~

이러한 방법은 너무 낮고 프로그래머의 능력을 보여주지 않습니다. 프로그램을 작성하려고 (사실 다음번에 이런 질문을 하는 여신을 만나면 프로그램이 참 편할 줄 알았는데, 하하~~)

해결책

첫 번째 방법은 수학적 방법을 사용하는 것이고, 질문의 규칙에 따라 다음 작업을 반복합니다: 반올림 =>나머지=>나머지*10+반올림. . . . . 나머지 반올림의 대상은 자릿수에 따라 모두 10의 배수입니다. 각 반올림 후에는 한 자릿수가 있으며 해당 숫자가 0이 될 때까지 루프가 계속됩니다.

$raw_num = 631758924;

$num = 0;

$devisor = 1;

while($devisor

{

$devisor *= 1 0; /raw_num의 10의 배수인 가장 작은 정수를 얻습니다.

}

while ($raw_num > 0) {

$devisor /= 10

$next = Floor($raw_num / $devisor) ; //다음 숫자를 얻습니다

$num = $num*10 + $devisor); //최신 QQ 숫자를 이어붙이기 위해 숫자를 이동합니다

$pre = $raw_num % (ceil($devisor / 10));

$raw_num = $pre * 10 + $last;

}

echo "축하합니다. QQ 번호를 성공적으로 획득했습니다. //축하합니다. QQ 번호: 615947283

QQ 번호를 얻으려면 대기열의 FIFO를 사용하세요. 질문의 특성에 따르면 대기열을 사용하면 간단하고 편리하며 이해하기 쉽습니다.

#include

구조물 대기열 {

int *data;

int head;

int tail()

{

int num , 나;

 printf("해독할 QQ 번호의 길이를 입력하세요:");

 scanf("%d", &num)

 struct queue q; malloc(sizeof (int)*(num*2-1)); //필요한 총 배열 길이는 num*2-1

q.head = 0;

q.tail = 0

(i= 1;i

{

scanf("%d", &q.data[q.tail])

q.tail++;

}

Printf(" 축하합니다. QQ 번호를 성공적으로 획득했습니다: ");

while(q.head

{

                                                                                                                   

q.data[q.tail] = q.data[q.head];

Q. 테일 ++; 해독할 QQ 번호의 길이를 입력하세요: 9

6

...

QQ 넘버도 획득했고, 좋은 실력도 보여줬습니다. 이제 여신의 마음 속에서 나의 지위는 크게 향상되었다.

이 방법을 어떻게 배웠나요?

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.