牛客网刷题 | BC79 小乐乐求和

目前主要分为三个专栏,后续还会添加:

专栏如下: C语言刷题解析 C语言系列文章 我的成长经历

感谢阅读!

初来乍到,如有错误请指出,感谢!


描述

小乐乐最近接触了求和符号Σ,他想计算

的结果。但是小乐乐很笨,请你帮助他解答。

输入描述:

输入一个正整数n (1 ≤ n ≤ 109)

输出描述:

输出一个值,为求和结果。


思路 :

这题要先看懂要求的是什么

我就看错了

我看成要求阶乘了

想了半天没想出来

结果是要求一个数字加起来的和

读取输入 :使用 scanf 函数读取用户输入的正整数 𝑛n。

计算求和:使用等差数列求和公式计算从 1 到 𝑛n 的整数和。

处理潜在的整数溢出 :由于 𝑛n 可能非常大,我们使用 unsigned long long 类型来存储求和结果。

输出结果 :使用 printf 函数输出计算得到的求和结果。


代码 1 :

cpp 复制代码
# include <stdio.h>
int main ()

{
    long int n = 0;//数字很大的时候会溢出,所以把int改为长整型保证不会溢出
    long int sum =0;
    scanf("%ld",&n);
    for (int i = 0; i<=n; i++) 
    {
        sum+=i;//sum=sum+i
    }
    printf("%ld",sum);
    return 0;
}

代码 2 :

cpp 复制代码
// 总和太大,注意用长整型
long long sum(unsigned n)
{
    if(n<=1) // 注意给条件防止死循环,当n<=1时,开始层层往上返回结果
    {
        return 1;
    }
    return n + sum(n-1);// 递归实现
}

int main()
{
    int n = 0;
    scanf("%d", &n);
    printf("%lld\n", sum(n)); 

    return 0;
}

代码 3 :

AI给出的代码

cpp 复制代码
#include <stdio.h>

int main() {
    unsigned long long n, sum;

    // 读取输入的正整数 n
    scanf("%llu", &n);

    // 计算求和结果,注意使用 unsigned long long 避免溢出
    sum = n * (n + 1) / 2;

    // 输出求和结果
    printf("%llu\n", sum);

    return 0;
}

这段代码首先包含了 stdio.h 头文件,以便使用 scanfprintf 函数。然后在 main 函数中,定义了两个 unsigned long long 类型的变量 nsum 分别用于存储输入的数值和求和结果。使用 scanf 读取输入的 n,然后计算 sum 并使用 printf 输出结果。

注意:在C语言中,unsigned long long 类型的大小至少是 64 位,能够存储的数值范围远远大于 int 类型,这有助于处理大数的求和问题。同时,由于我们使用的是整数除法,所以不需要担心小数点后的部分。


知识点:

输入输出函数

scanf:用于从标准输入读取数据,常用于读取用户输入的值。

printf:用于向标准输出打印格式化的字符串。

数据类型

unsigned long long:一种基本数据类型,用于存储大整数,其范围比 int 类型大,适合处理大数求和的问题。

算术运算符

*(乘法):用于计算两个数的乘积。

/(除法):用于计算两个数的商。

变量声明和初始化:在C语言中,使用变量之前需要声明其数据类型。

控制流程

main 函数:C语言程序的入口点,所有程序的执行都从这里开始。

函数返回值

return:在 main 函数中使用,用于结束程序并返回一个状态值给操作系统。通常返回 0 表示程序正常结束。

格式化输出

%llu:在 printf 函数中,用于格式化输出 unsigned long long 类型的数值。

整数溢出:在处理大整数时,需要注意整数溢出的问题,选择合适的数据类型以避免这种情况。

函数原型 :在C语言中,使用到的库函数(如 scanfprintf)需要包含相应的头文件。

头文件包含

#include <stdio.h>:包含了标准输入输出函数的声明,是进行输入输出操作时必须包含的头文件。

相关推荐
何曾参静谧18 分钟前
「C/C++」C/C++ 指针篇 之 指针运算
c语言·开发语言·c++
lulu_gh_yu1 小时前
数据结构之排序补充
c语言·开发语言·数据结构·c++·学习·算法·排序算法
~yY…s<#>3 小时前
【刷题17】最小栈、栈的压入弹出、逆波兰表达式
c语言·数据结构·c++·算法·leetcode
EricWang13585 小时前
[OS] 项目三-2-proc.c: exit(int status)
服务器·c语言·前端
我是谁??5 小时前
C/C++使用AddressSanitizer检测内存错误
c语言·c++
希言JY5 小时前
C字符串 | 字符串处理函数 | 使用 | 原理 | 实现
c语言·开发语言
午言若5 小时前
C语言比较两个字符串是否相同
c语言
TeYiToKu7 小时前
笔记整理—linux驱动开发部分(9)framebuffer驱动框架
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件·arm
互联网打工人no17 小时前
每日一题——第一百二十四题
c语言
爱吃生蚝的于勒7 小时前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法