用 C++ 计算将数字分成几部分的方法数
给定一个正数 N,目标是计算将数字 N 分成 3 部分的方法数。这些部分可以相等,也可以不相等。N 的范围在 [1, 5000] 之间。
我们将使用三个 for 循环来表示数字的 3 个部分。在最内层循环中检查三个数的总和是否等于 N。如果相等,则递增方法计数。
让我们通过例子来理解。
输入 − N=5
输出 − 将 N 分成 3 部分的方法数:2
解释 − 5 可以表示为 (1,1,3) 和 (1,2,2) 的和。
输入 − N=9
输出 − 将 N 分成 3 部分的方法数:7
解释 − 9 可以表示为以下和:(1, 1, 7), (1, 2, 6), (1, 3, 5), (1, 4, 4), (2, 2, 5), (2, 3, 4) 和 (3, 3, 3)。
下面程序中使用的方法如下
我们取一个整数 N,其初始值在 1 到 5000 之间。
函数 divideN(int n) 接收 n 并返回将 n 分成 3 部分的方法数。
将初始变量 count 设置为 0,表示方法数。
使用三个 for 循环遍历数字的每一部分。
最外层循环从 1<=i
检查 i、j 和 k 的和是否等于 n。如果相等,则递增 count。
所有循环结束后,count 将包含将 n 分成三个部分的总方法数。
返回 count 作为结果。
示例
#include <bits/stdc++.h>
using namespace std;
int divideN(int n){
int count = 0;
for (int i = 1; i < n; i++){
for (int j = i ; j < n; j++){
for (int k = j; k < n; k++){
int sum=i+j+k;
if(sum==n)
{ count++; }
}
}
}
return count;
}
int main(){
int N=500;
cout <<endl<< "Number of ways to divide N in 3 parts : "<<divideN(N);
return 0;
}输出
如果运行以上代码,将生成以下输出:
Number of ways to divide N in 3 parts: 20833
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP