给定一个数字n,打印序列中大于或等于n的第一个数字
Given a number n, print the first number of the series greater than or equal to n
我正试图找到一种有效的方法,在给定数字n的情况下,打印以下系列中大于或等于n的第一个数字:
0,0+1,0+1+2,0+1+2+3,0+1+2+3+4,…=0、1、3、6、10
例如,2将返回3,7(或8,或9)将返回10。
肯定有一个聪明的方法可以解决它…你能帮我吗?提前感谢!
以下代码返回了正确的解决方案,但它对这个问题的效率不够:
#include <iostream>
using namespace std;
int main(){
int n;
while(cin >> n){
int m = 0;
for(int i = 1;m < n; ++i){
m = m + i;
}
cout << m << endl;
}
}
您正在描述三角数!
y = (x*(x + 1)) / 2;
要得到给定y的序列中的下一个数字,可以求解x
x = ceil((sqrt(1+8y)-1)/2);
然后把x放回第一个公式中,得到你的答案!
这对大数字来说是一个很好的方法,但对小数字来说可能不理想
基本上,您想为算术级数(AP)编写程序,即第一个n数字的总和
int main(){
int n;
while(cin >> n){
int m = (n * (n + 1)) / 2;
cout << m << endl;
}
}
相关文章:
- 查找最接近的大于当前数字的数字的索引
- 如何找到大于整数的最小数字
- 如何查找数字大于 5 的数字总和
- 为什么 CSpinButtonCtrl 不能正确处理大于 1000 的数字?
- 计算向量中大于数字的元素
- 如何在向量中找到大于某些数字的所有元素
- 如何在给出前两个数字的级数中找到大于 x 的第 n 个最小子数组总和?
- 显示用户输入的平均数大于 50 和所有可被 3 整除的数字的乘积
- 如何在数字大于类型 size_t 的最大数量时使用 std::bitset
- 如何将一个数字(大于8个字节)从字符阵列转换为其ASCII表示
- 如何生成数字,直到它们大于10 000
- C 用户输入4个数字,并且该程序检查它们大于少于
- 为什么此代码只能识别文本文件中的第一行?输入任何大于 1 的数字都会返回"Atomic Number Not Found"
- 给定一个数字n,打印序列中大于或等于n的第一个数字
- bignumber.h arduino如何解析大于10位数字的数字
- 使用单个堆栈的中缀到后缀不适用于大于 9 的数字
- 在字符串中的一行中搜索大于0的数字
- 从字符串转换为数字大于 std::numeric_limit<double>::d igits10 的双精度
- 在C++中打开一个数字大于9的COM端口
- 检查数字是否为完全平方数(数字大于15位)