Cách chia một số thành các phần bằng nhau trong C++

Giả sử chúng ta có một số n. Chúng ta phải tìm số cách chia một số thành các phần (a, b, c và d) sao cho a = c và b = d. Vì vậy, nếu số là 20, thì đầu ra sẽ là 4. Như [1, 1, 9, 9], [2, 2, 8, 8], [3, 3, 7, 7] và [4, 4, 6, 6]

Vì vậy, nếu N là số lẻ, thì câu trả lời sẽ là 0. Nếu số đó chia hết cho 4 thì đáp án sẽ là n/4 – 1 ngược lại n/4

Ví dụ

Bản thử trực tiếp

#include 
using namespace std;
int countPossiblity(int num) {
   if (num % 2 == 1)
      return 0;
   else if (num % 4 == 0)
      return num / 4 - 1;
   else
      return num / 4;
}
int main() {
   int n = 20;
   cout << "Number of possibilities: " << countPossiblity(n);
}

đầu ra

Number of possibilities: 4

Cách chia một số thành các phần bằng nhau trong C++


Cách chia một số thành các phần bằng nhau trong C++

Giả sử tôi muốn chia một số (514) thành 20 phần xấp xỉ bằng nhau và tôi muốn biết mỗi số sẽ là bao nhiêu. Vì vậy, ví dụ, nếu tôi muốn chia 10 thành 3 phần, tôi sẽ muốn một số như 3, 6, 10

Tôi biết tôi có thể làm điều gì đó tương tự như những gì tôi muốn cắt

unique(cut(1:514,breaks=20))

mang lại cho tôi đầu ra sau

[1] (0.487,26.6] (26.6,52.3]  (52.3,77.9]  (77.9,104]   (104,129]    (129,155]    (155,181]   
[8] (181,206]    (206,232]    (232,258]    (258,283]    (283,309]    (309,334]    (334,360]   
[15] (360,386]    (386,411]    (411,437]    (437,463]    (463,488]    (488,515]   

Tôi có thể thấy đó là những khoảng ngắt gần đúng, nhưng làm cách nào tôi có thể lấy 20 số nguyên có các khoảng ngắt?

Để phân phối số $n$ thành các phần của $p$, bạn sẽ tính “phép chia số nguyên cắt ngắn” của $n$ chia cho $p$ và phần còn lại tương ứng

Về mặt toán học, đó là (giả sử rằng cả $n$ và $p$ đều là số nguyên dương) $$ d = \left\lfloor \frac np \right\rfloor \, , \quad r = n \bmod p = n-pd \ . $$

Trong nhiều ngôn ngữ lập trình, bạn sẽ làm điều gì đó như

int d = n / p; // truncating integer division
int r = n % p; // remainder

Khi đó $$n = pd + r = r(d+1) + (p-r)d $$ sao cho phân vùng mong muốn là $$ \underbrace{d+1, \ldots, d+1}_{r \text{

Giả sử bạn muốn chia một số nguyên, e. g. 20, thành các phần bằng nhau của 3 và chia đều phần còn lại cho các nhóm. Kết quả của phép toán như vậy sẽ là 3 số nguyên sau

7,7,6

20 có thể được chia thành 3 phần bằng nhau của 6 và chúng ta có số dư là 20 – 6 * 3 = 2. 2 sau đó được thêm dưới dạng 1 và 1 vào hai nhóm 6 đầu tiên. Kết quả là phân phối ít nhiều bằng nhau của số nguyên bắt đầu

Nhận một số dương từ người dùng và in từng chữ số của một số

ví dụ 1

số = 12

đầu ra

2

1

ví dụ 2

số = 123

đầu ra

3

2

1




Hãy thiết kế một logic

số = 12

Đầu tiên chúng ta hãy suy nghĩ, làm thế nào để tách chữ số cuối cùng 2 từ số 12

Vì các số là số thập phân (cơ số 10), phạm vi của mỗi chữ số phải từ 0 đến 9

Vì vậy, chúng ta có thể dễ dàng thực hiện bằng cách thực hiện modulo 10

Thích,

12 % 10 => 2 ( ta đã tách chữ số 2 từ số 12)

Bây giờ, chúng ta phải tách chữ số 1 từ số 12

Điều này có thể đạt được bằng cách chia số cho 10 và lấy modulo 10

Thích,

12/10 => 1

Bây giờ lấy modulo 10

1 % 10 = 1

Sử dụng phương pháp trên, chúng ta có thể tách từng chữ số từ một số




Hợp lý

Cho đến khi số trở thành 0

làm

Lấy số % 10 và in kết quả

Chia số đó cho 10. (số = số / 10)




Ví dụ

Hãy lấy num = 123

Bước 1

Num = 123 (không bằng 0)

Mod = 123% 10 ==> 3

Số = 123/10 ==> 12

Bước 2

Num = 12 (không bằng 0)

Mod = 12% 10 ==> 2

Số = 12/10 ==> 1

Bước 3

Num = 1 (không bằng 0)

Chế độ = 1% 10 ==> 1

Số = 1/10 ==> 0

Bước 4

Num = 0 (bằng 0, dừng quá trình)


Giải thích bằng hình ảnh

Cách chia một số thành các phần bằng nhau trong C++



Chương trình

Ví dụ

/*****************************
 *Program : split the digits *
 *Language : C               *
 *****************************/
 
#include

int main()
{
    int num;
    
    scanf("%d",&num);
    
    while(num > 0) //do till num greater than  0
    {
        int mod = num % 10;  //split last digit from number
        printf("%d\n",mod); //print the digit. 
    
        num = num / 10;    //divide num by 10. num /= 10 also a valid one 
    }
    
    return 0;
}


chạy nó


Chủ đề bạn có thể thích

Làm cách nào để chia một số thành hai phần trong C?

Đây là mã của tôi. int a; . phân công. c. division.

Làm thế nào để chia một số trong C?

printf("Nhập cổ tức. "); scanf("%d", ÷nd); printf("Nhập số chia. "); scanf("%d", &divisor); Sau đó thương được đánh giá bằng cách sử dụng / (toán tử chia) và được lưu trữ trong thương. thương = số bị chia / số bị chia ; .