iİnformatikanın məktəbdə tədrisi

2-11r

2.1              Для всех натуральных чисел, от N до  M (N < M) проверить условие, что разность любого натурального числа и суммы его цифр кратна 9. Если это условие выполняется для всех чисел вывести на экран слово  YES, иначе слово NO.

 Алгоритм понятен: надо для каждого числа от N до M  найти сумму цифр (задача 2), найти разность исходного числа и этой суммы и проверить делимость на 9. Но обычно в этой задаче начинающие программировать всегда делают одну и ту же ошибку – для каждого числа, для которого выполняется требуемое условие, они выводят слово  YES. И если, например,  N=1000,  а M=9999, программа выдаст 10000 слов YES. Дело в том, что в этой программе слово YES  надо вывести один раз только, когда все числа от N до M  удовлетворяют требуемому условию, и вывести слово NO,  когда хотя бы один раз требуемое условие не выполнилось бы, и после этого программа должна закончит свою работу.

В нашей программе оператор в строке 6 организует перебор всех чисел от N до M  В строках 8 – 13 находим сумму цифр числа n1 (равному i ). В строке 14 делимости разности  (i-s) на  9 и в случае, если эта разность не делится на 9, программа выводит слово NO и заканчивает свою работу: оператор  exit;  И только, когда все числа будут рассмотрены и ни разу условие не будет не выпонено, тогда после цикла for (строки 6 – 16) программа выдаст на экран слово YES.

 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

Program A2_11;

Var

  n,m,i,s,n1:integer;

 begin

   readln(n,m);

   for i:=n to m do

      begin

        n1:=i; s:=0;

        while(n1<>0) do

          begin

            s:=s + n1 mod 10;

            n1:=n1 div 10;

         end;

           if ((i-s) mod 9<>0) then

              begin writeln('NO'); exit; end;

      end;

   writeln('YES');

   readln;

 end.

// Program A2.11;

#include <iostream>

 

using namespace std;

 

int main()

{

   int n,m,i,s,n1;

   cin>>n>>m;

   for(i=n; i<=m; i++)

   {

       n1=i; s=0;

       while(n1)

{  s+=n1%10;   // тоже, что и s=s+n1%10;

  n1/=10;   //  тоже, что и n1=n1/10;

       }

  if((i-s)%9!=0){cout<<"NO\n"; return 0;}

   }

       cout<<"YES\n";

    return 0;

}