C 언어 (4) 백가지 경우 프로그래밍 : 자기애 수

실시 예 4 수 자기애

제목 설명

세자리 정수 (100 ~ 999), 각 숫자는 "선화의 수"라고 수 자체의 세제곱 동일한 경우 (예 : 153 = 1 3 + 5 3 + 3 3 ) 모두 찾기의 여러.

입력 형식

입력하지 마십시오

출력 형식

한 자리에서 여러 선.

SAMPLE INPUT

아니오

샘플 출력

153

* * *

...

* * *

(출력 조화되는)

      (1) 1 개 프로그래밍 아이디어.

        세 자리수 N (n은 100 ~ 999 사이의 정수이다) 총망라. n은 각각의 열거는 분해되는 경우 백 예 A (A = N / 100) 10 (B) (B = N / 10 ~ 10) 및 비트 (C) (C = N 10 %) A *의 A * A + B * B * C + B * C * C == N, N 다음 선화의 수이다.

      (2) 소스.

#INCLUDE <STDIO.H>

() 주요 int로

{

     INT N, A, B, C // N, A, B 및 C 세자리 자체와 백 및 열 비트이다

     대 (N = 100, N <= 999; N ++)          

          {

         A = N / 100;

                    B = N / 10 10 %;

                    C = 10 %, N;           

         경우 (A * A * A + B * B * C + B * C * C == N)

             의 printf ( "가 % d \ n", N);

          }

     0을 반환;    

}

       (3) 2 개 프로그래밍 아이디어.

        하고자하는 불량한 백 자리 3 (1 내지 9의 범위) 10 B (B는 0 내지 9의 범위이다)와 트리플 루프 (C) 비트 (0 내지 9 범위 C) 위한 루프 본체에서 3 자리 N (N = 100 * A + 10 * B + C)를 계산하고 만약 충족 A * A * A + B * B * B + C * C * C를 결정 == N, N 선화 다음의 수이다.

      (4) 2 원.

사용법 #include <iostream>

네임 스페이스를 사용하여 표준;

() 주요 int로

{

     INT N, A, B, C // N, A, B 및 C 세자리 자체와 백 및 열 비트이다

     경우 (A = 1,은 <= 9; ++)          

        대 (b = 0, B <= 9; B ++)

           대 (C = O, C <= 9; C ++)                

           {

              N = 100 * 10 * A + B + C;           

              경우 (A * A * A + B * B * C + B * C * C == N)

             의 printf ( "가 % d \ n", N);

}

0을 반환;    

}

 

문제 4

4-1 서브 정수

        이 질문은 로스 밸리 시험에서 선택되는 (https://www.luogu.org/problem/P1151)

제목 설명

다섯 자리 숫자 A에 대한 . 1 2 . 3 . 4 . 5 , 이는 세 개의 하위들로 분할 될 수있다 :

= 의 SUB1 1 의 2 의 3

= 의 Sub2라는 2 의 3 의 4

= 의 SUB3 3 의 4 의 5

예를 들어, 숫자 20207은 다섯 가지로 분리 할 수있다

SUB1 = 202

SUB2 = 020 (= 20)

SUB3 = 207

이제 K 정수 긍정적 주어, 프로그래밍은 이러한 세 개의 하위 자리 숫자의 SUB1, SUB2, SUB3 K 나눌 수 있음, 단, 다음과 같은 다섯 개 가지 조건 10,000 30,000입니다 만족하는 모든 번호를 받아야합니다.

입력 형식

양의 정수 K

출력 형식

조건 5 자리 숫자가 충족되는 각각의 행위 고출력 소형의 요구. 아니 중복되거나 누락 된 출력. 해결책, 출력 "아니오"를합니다.

SAMPLE INPUT

(15)

샘플 출력

22555

25555

28555

30000

         (1) 프로그래밍 아이디어.

        제목 키 SUB1에게 하위 3 ~ 5 수 (n), SUB2 및 SUB3의 숫자를 격리됩니다. 높은 SUB1 이후, n은 3 자리 따라서 SUB1 = N / 100; SUB2 중간 n은 3 비트, 따라서 SUB2 = N / 10 ~ 1000이다 SUB3 낮은 n은 3 자리 따라서 SUB3 = N 개 ~ 1000.

         위한 순환 (N = 10000; N <= 30000; N ++) 각각의 N-자리수은 철저한 것으로 판정.

        (2) 소스.

#INCLUDE <STDIO.H>

() 주요 int로

{

         INT I, SUB1, SUB2, SUB3, K, F = 0;

        scanf와 ( "%의 D", K);

    대해 (ⅰ = 10000; I <= 30000; I ++)

         {

        SUB1 = 1 / 100;

                   SUB2 = 1 / 10 ~ 1000;

                   SUB3 내가 % = 1000;

                   경우 (SUB1 % K == 0 && SUB2 % K == 0 && SUB3 % K == 0)

                   {

                            의 printf ( "가 % d \ n", I);

                            F = 1;

                   }

         }

         경우 (F == 0)의 printf ( "아니오 \ n");

   0을 반환;

}

 

4-24 비트 세그먼트의 수의 제곱

제목 설명

수 개의 비트들과 동일하며 제곱으로 나눈 2, 4 개 개의 세그먼트의 수의 제곱을 호출하는 경우 (4)는 전에 두 후 2 비트 자연수로 분할된다. 예를 들어 2025 = (20 + 25) 2 .

모든 4 개 개의 세그먼트와 수의 제곱을 구하는 프로그램을 작성하라.

입력 형식

입력하지 마십시오

출력 형식

한 자리에서 여러 선.

SAMPLE INPUT

아니오

샘플 출력

2,025

* * *

...

* * *

(출력 조화되는)

         (1) 1 개 프로그래밍 아이디어.

         1000 내지 9999, 9000의 총 개수에 대한 모든 정수 N 철저한 4 N 범위에 대해. 각각의 수 (N)는 고 두자리 X (X = N / 100) 및 낮은 두자리 ​​Y (Y = N ~ 100 %) 한 후 판단을 분리하는 경우 만족 N == (X + Y) * ( X + Y)는 다음 N 4 비트 세그먼트 제곱 수이다.

       (2) 소스.

#INCLUDE <STDIO.H>

() 주요 int로

{

         INT N, X, Y;

         대 (N = 1000, N <= 9999, N ++)

         {

                   X = N / 100;

                   및 N = 100 %;

                   경우 (N == (X + Y) * (X + Y))

                            의 printf ( "가 % d \ n", N);

         }

    0을 반환;

}

           (3) 2 개 프로그래밍 아이디어.

         아이디어 철저한 숫자 1은 9000 배이다. 네 개의 세그먼트 수의 제곱 먼저 정사각형 참조해야하므로 사실상, 즉 철저한 SQRT SQRT (9999)과 (1000) 번호 ~ 4 비트의 완전한 사각형으로 만 필요 A, 루프의 본체에, 그리고, 제 4 자릿수, N = A *는 다음 분리 상위 두 자리 수 X (X = N / 100) 및 낮은 두자리 ​​Y (Y = N ~ 100 %)을 산출 == (X + Y)을 만족하는지 여부를 결정, 다음 N 4 비트 세그먼트 제곱 수이다. 분명히, 이러한 철저한, 사이클 시간이 크게 줄어 듭니다.

        (4) 2 원.

#INCLUDE <STDIO.H>

#INCLUDE <math.h>

() 주요 int로

{

         , Y, X하는 INT, N;

         위한 (a = (INT) SQRT (1000)은 <= (int)를 SQRT (9999) ++)

         {

                   N = A *는;

                   X = N / 100;

                   및 N = 100 %;

                   경우 (a == X + Y)

                            의 printf ( "가 % d \ n", N);

         }

    0을 반환;

}

 

4-3 특정 네 자리

제목 설명

등의 특정 네 자리 숫자가 있습니다, 그것은 하나의 천의 십 자리 숫자는 백일 디지털 제품 자리의 합과 같다. 예를 들어 3136, 1 * 3 + 3 = 6이므로 3136은 특정 숫자된다.

입력 형식

양의 정수 K (1,111 <= K <= 9999)

출력 형식

K는 일정한 최대 네 자리 숫자보다 더 크다.

SAMPLE INPUT

8000

샘플 출력

7,921

       (1) 프로그래밍 아이디어.

        난 철저한 K에서 시작 자리는 1 천 (a = 난 / 1000), 백 개 (B) (b = (IA는 1000 *) / (100)) 각 숫자의 I 10 C 분리 (d = 1 ~ 10 %) (c = (도 1a /) 10 1000 * 100 * B) 및 비트 거라고.

      (2) 소스.

#INCLUDE <STDIO.H>

() 주요 int로

{

   int로 I, K, A, B, C, D;

   scanf와 ( "%의 D", K);

   대해 (ⅰ = K를, I> = 1000; 난 -)

   {

      A = I / 1000;

      B = (IA는 1000 *) / (100);

      C = (IA-B * 1000 * 100) / 10;

      D = 1의 10 %;

      경우 (A + C, B == * d)

      {

          의 printf ( "가 % d \ n", I);

          단절;

      }

   }

   0을 반환;

}

 

추천

출처www.cnblogs.com/cs-whut/p/11854563.html