Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 특정 값보다 큰 숫자와 숫자 합 사이의 차이가 있는 숫자 계산

<시간/>

범위 [1,N]을 정의하는 두 개의 숫자 N과 차이인 D가 제공됩니다. 목표는 [ number - (숫자의 합)]이 되도록 [1,N] 범위의 모든 숫자를 찾는 것입니다 ]> D. 1에서 N까지 숫자를 탐색하여 이를 수행하고 각 숫자에 대해 while 루프를 사용하여 숫자 합계를 계산합니다. 숫자와 계산된 자릿수의 합이 D 이상 차이가 나는지 확인하십시오.

예를 들어 이해합시다.

입력

N=15 D=5

출력

숫자 차이 b/w no. 값 D보다 큰 숫자 합:6

설명

숫자 10, 11, 12, 13, 14, 15가 조건을 만족합니다. ( 10-1, 11-2, 12-3, 13-4, 14-5, 15-6 ) 모든 차이는 5보다 큰 9입니다.

입력

N=20 D=10

출력

20개만 조건을 만족합니다. 20-2=18> 10.

설명

다음은 0이 아닌 모든 숫자로 나눌 수 있는 숫자의 목록입니다. 100 101 102 104 105 110 111 112 115 120 122 124 126 128 132 135 1540 144 1810 2 15 

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 정수 N과 D를 취합니다.

  • 함수 digitSum(int n, int d)은 변수 N, D를 취하고 (num-digitsum)>d를 사용하여 숫자의 개수를 반환합니다.

  • 이러한 숫자에 대해 초기 변수 개수를 0으로 간주합니다.

  • 변수 digsum을 0으로 사용

  • for 루프를 사용하여 숫자 범위를 탐색합니다. i=1 ~ i=n

  • 이제 각 숫자 num=i에 대해 while 루프를 사용하여 number가>0인지 확인합니다.

  • digsum+=num%10을 계산합니다. 다음 숫자를 추가하려면 num=num/10을 줄입니다.

  • 시간이 끝나면 ( i - digsum> d ) 확인하십시오. true인 경우 카운트가 증가합니다.

  • 모든 루프의 끝에서 count는 조건을 만족하는 총 숫자를 갖게 됩니다.

  • 카운트를 결과로 반환합니다.

예시

#include 네임스페이스 std;int digitSum(int n, int d){ int count =0; 정수 digsum =0; for (int i =1; i <=n; i++){ int num=i; digsum=0; 동안(숫자>0){ 숫자+=숫자%10; // 숫자의 합 num=num/10; } if(i-digsum>d) //원래 숫자는 i { count++; //cout< 

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

숫자와 그 자릿수 합이 특정 값보다 큰 숫자:11