Computer >> Máy Tính >  >> Lập trình >> C ++

In tất cả các số có n chữ số với hiệu số tuyệt đối giữa tổng các chữ số chẵn và lẻ là 1 trong C ++


Trong bài toán này, chúng ta được cho một số nguyên n và chúng ta phải in ra tất cả các số có n chữ số sao cho hiệu số tuyệt đối giữa tổng các chữ số của số đó là chẵn và lẻ là 1. Trong khi tạo các số đứng đầu số 0 không được xem xét.

Sự khác biệt tuyệt đối là hiệu giữa cả hai số có giá trị là giá trị tuyệt đối (giá trị dương).

Hãy lấy một ví dụ để hiểu vấn đề -

 Đầu vào:n =2 Đầu ra:10 12 21 23 32 34 43 45 54 56 65 67 76 78 87 89 98 Giải thích:lấy một trong các số từ đầu ra, 54, chữ số chẵn - chữ số lẻ =5 - 4 =189, chữ số chẵn - chữ số lẻ =8 - 9 =-1, | -1 | =1. 

Để giải quyết vấn đề này, chúng ta sẽ phải tìm tất cả các số có n chữ số với hiệu 1 hoặc -1. Đối với điều này, chúng tôi sẽ cố định một vị trí chữ số với tất cả các giá trị và dựa trên vị trí của nó là chẵn hay lẻ, gọi các giá trị ở các vị trí khác trong số sao cho điều kiện vẫn được thỏa mãn.

Ví dụ

Chương trình dưới đây sẽ minh họa giải pháp của chúng tôi -

 #include  using namespace std; void printNumber (int n, char * out, int index, int EvenSum, int retailSum) {if (index> n) return; if (index ==n) {if (abs (chẵn - lẻ) ==1) {out [index] =''; cout < 

Đầu ra

Số có 3 chữ số có hiệu số tuyệt đối 1 −100 111 120 122 131 133 142 144 153 155 164 166 175 177 186 188 197 199 210 221 230 232 241 243 252 254 263 265 274 276 285 287 296 298 320 331 340 342 351 353 362 364 373 375 384 386 395 397 430 441 450 452 461 463 472 474 483 485 494 496 540 551 560 562 571 573 582 584 593 595 650 661 670 672 681 683 692 694 760 771 780 782 791 793 870 881 890 892 980 991