圣诞树,代码怎么写呀

img

C++的代码。输入格式输入一行一个整数n圣诞树的层数输出格式输出一行一个整数,代表圣诞树中绳子的段数。输入样例 2 输出样例 3。输入样例 4 输出样例15。所有数据满足1<=n<=1000。

#include<iostream>
using namespace std;
int main(){
    int n;
    cin>>n;
    int ans=0;
    for(int i=1;i<=n;i++){
        ans+=i*(i+1)/2;//计算每一层的绳子数
    }
    cout<<ans+n<<endl;//加上树干的绳子数
    return 0;
}
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7570413
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C++例题:输入一个整数n(1<=n<=1000),请判断1-n的数字里面,出现了多少次9
  • 除此之外, 这篇博客: 埃拉托色尼筛选法 C++实现中的 给定一个数字n, 2≤n≤2000000, 编写一个程序实现埃拉托色尼筛选法找出小于或等于n的所有素数。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 最基本的实现方法:

    #include <iostream>
    //在外部创建全局变量解决数组过大的问题
    const int m = 2000000;
    using namespace std;
    //给第一个赋值为2,初始化质数列表
    int all_number[m] = {2, 0};
    
    int main() {
        int n, i, j;
        cout << "input an integer: " << endl;
        cin >> n;
        //生成2~n的所有整数
        for (i = 0; i < n; ++i) all_number[i] = i + 2;
        //筛选质数
        for (i = 1; i <= n; ++i) {
            for (j = 1; j <= i; ++j) {
            	//避免出现除以前面标记为0的错误
                if (all_number[j - 1] == 0)continue;
                else {
                	//判断是否可以整除前面的数
                    if (all_number[i] % all_number[j - 1] == 0) {
                            //用零替换被筛掉的数
                            all_number[i] = 0;
                            break;
                    }
                }
            }
        }
        //输出剩下的质数(非零)
        for (i = 0; i <= n; ++i) {
            if (all_number[i] != 0) {
                cout << all_number[i] << " ";
            }
        }
        return 0;
    }
    

    小结:

    • 用零标记
    • 避免标记后再次参与运算,从而出现除以0的错误