1 条题解

  • 0
    @ 2025-8-24 21:03:13

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar HiKou
    信息学奥赛狗都不学

    搬运于2025-08-24 21:03:12,当前版本为作者最后更新于2021-07-11 18:00:26,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    看题

    “要使每个人都能拿到苹果”指苹果数量不能为0。

    “每个人拿到的苹果数都不同”指数据不能重复。

    “至少应该有多少个”指要使求得的值最小。

    既要数据不能重复,还要使答案最小,又不能从0开始。

    那就从1开始枚举到 n 即为答案。

    CODE 1:

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    	int n,ans=0;
    	cin>>n;
    	for(int i=1;i<=n;i++)
    	ans+=i;//累加
    	
    	cout<<ans;//输出
    	
    	return 0;
    }
    

    但是,此题可以进一步优化。

    因为本题是从1枚举到 n ,每一个数间隔是1,又知道了共有 n 个数。

    所以,这道题可以用等差数列求和的公式:

    Sn=(1+n)×n2S_n=\dfrac{(1+n)×n} {2}

    CODE 2:

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    	int n;
    	cin>>n;
    	cout<<n*(n+1)/2;//直接套公式
    	
    	return 0;
    }
    

    END.

    • 1

    信息

    ID
    6929
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    递交数
    1
    已通过
    1
    上传者