牛客网刷题训练(三)

简介: 👩‍💻博客主页:[风起 风落](https://blog.csdn.net/qq_62939852?spm=1001.2101.3001.5343)的博客主页✨欢迎关注🖱点赞🎀收藏⭐留言✒👕参考网站:牛客网💻首发时间:🎞2022年7月27日🎠🎨你的收入跟你的不可替代成正比🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦💬给大家介绍一个求职刷题收割offer的地方👉[点击进入网站](https://www.nowcoder.com/link/pc_csdncpt_fqfl_c)

👩‍💻博客主页:风起 风落的博客主页

✨欢迎关注🖱点赞🎀收藏⭐留言✒

👕参考网站:牛客网

💻首发时间:🎞2022年7月27日🎠

🎨你的收入跟你的不可替代成正比

🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦

💬给大家介绍一个求职刷题收割offer的地方👉点击进入网站

在这里插入图片描述

@TOC

1.BC112 小乐乐求和

描述

小乐乐最近接触了求和符号Σ,他想计算的结果。但是小乐乐很笨,请你帮助他解答。

输入描述:

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

输出描述:

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

示例1

输入:

1

输出:

1

示例2

输入:

10

输出:

55

#include<stdio.h>
int main()
{
    int n=0;
    scanf("%d",&n);
    int i=0;
    long long ret=0;
    for(i=1;i<=n;i++)
    {
        ret+=i;
    }
    printf("%ld\n",ret);
    return 0;
}

在这里插入图片描述

>

这道题看似简单 实际上 如果 ret 设计成int 返回值用%d接收,就会报错  

在这里插入图片描述实际输出的结果比预期结果少了一位   由此我们可以想到一个问题 是不是越界了int 为4个字节 28个比特位  即2^27 我们使用 long long 接收就可以解决了

2.BC107 矩阵转置

描述

KiKi有一个矩阵,他想知道转置后的矩阵(将矩阵的行列互换得到的新矩阵称为转置矩阵),请编程帮他解答。

输入描述:

第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。 (1≤n≤10,1≤m≤10)

从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。

输出描述:

输出m行n列,为矩阵转置后的结果。每个数后面有一个空格。

示例1

输入:

2 3

1 2 3

4 5 6

输出:

1 4

2 5

3 6

#include<stdio.h>
int main()
{
    int i=0;
    int j=0;
    int m=0;
    int n=0;
    scanf("%d%d",&m,&n);
    int arr1[10][10]={0};
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%d",&arr1[i][j]);
        }
    }
    int arr2[10][10]={0};
    for(i=0;i<n;i++)//3
    {
        for(j=0;j<m;j++)//2
        {
            arr2[i][j]=arr1[j][i];
            printf("%d ",arr2[i][j]);
        }
        printf("\n");
    }
}

在这里插入图片描述

这道题主要考察了对数组的理解程度

主要思路 :创建两个二维数组 : arr1[10][10],arr2[10][10]

用第一个二维数组接收输入进来的值

用第二个二维数组接收要转换过来的值

即第一次 行为m  列为n

第二次  行为n   列为m

把第一个二维数组满意的值传到第二个二维数组里

3.BC109 杨辉三角

描述

KiKi知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣,他想知道杨辉三角的前n行,请编程帮他解答。杨辉三角,本质上是二项式(a+b)的n次方展开后各项的系数排成的三角形。其性质包括:每行的端点数为1, 一个数也为1;每个数等于它左上方和上方的两数之和。

输入描述:

第一行包含一个整数数n。 (1≤n≤30)

输出描述:

包含n行,为杨辉三角的前n行,每个数输出域宽为5。

示例1

输入:

6

输出:

   1

   1    1

   1    2    1

   1    3    3    1

   1    4    6    4    1

   1    5   10   10    5    1

#include<stdio.h>
int main()
{
    int i=0;
    int j=0;
    int n=0;
    scanf("%d",&n);
    int arr[30][30]={0};
    for(i=0;i<n;i++)
    {
        for(j=0;j<=i;j++)
        {
            if(j==0||i==j)
            {
                arr[i][j]=1;
                printf("%5d",arr[i][j]);
            }
            else
            {
                arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
                printf("%5d",arr[i][j]);
            }
        }
        printf("\n");
    }
}

在这里插入图片描述

这道题想要搞懂, 就先看好它是由什么构成的

首先 为一个三角形 所以写了一个三角形的双for

把每一个点都看作 坐标

即第一列都为1

行与列相等的坐标 都为1

所以 写了个if语句

而其他的坐标都为 上一个坐标和上一个左边的坐标加和

不要忘记换行

4.BC38 变种水仙花

描述

变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。

例如:

655 = 6 * 55 + 65 * 5

1461 = 1461 + 1461 + 146*1

求出 5位数中的所有 Lily Number。

输入描述:

输出描述:

一行,5位数中的所有 Lily Number,每两个数之间间隔一个空格。

#include<stdio.h>
int main()
{
    int i=0;
    int j=0;
    int ret=0;
    for(i=10000;i<=99999;i++)
    {
        ret=0;
        for(j=10;j<=10000;j*=10)
        {
            ret=ret+(i/j)*(i%j);
        }
        if(ret==i)
        {
            printf("%d ",i);
        }
    }
    return 0;
}

在这里插入图片描述

相对于正常的水仙花数 有点绕

如果想不到 直接 将所有情况列举出来 然后加和跟i比较也是可以的

观察1461 就知道 先从 /10 %10 开始 到/1000 %1000  每次 * 10

1461作为一个4位数 最后/1000

那5位数肯定最后/10000 %10000

每次再*10就可以了

总结

通过以上来自牛客网的练习题

相信会对学习c语言更有兴趣 ,让我们一起加油吧  

不太自信的小伙伴可以看看这个训练

在这里插入图片描述
目录
相关文章
|
1月前
牛客网经典题型的讲解
牛客网经典题型的讲解
|
5月前
|
机器学习/深度学习 算法
经典算法试题(二)
经典算法试题(二)
76 0
|
物联网 C++
C/C++之(一)洛谷刷题及洛谷评测 中
C/C++之(一)洛谷刷题及洛谷评测 中
514 0
C/C++之(一)洛谷刷题及洛谷评测 中
|
机器学习/深度学习 C++
C/C++之(一)洛谷刷题及洛谷评测 下
C/C++之(一)洛谷刷题及洛谷评测 下
138 0
|
机器学习/深度学习 人工智能 安全
C/C++之(一)洛谷刷题及洛谷评测 上
C/C++之(一)洛谷刷题及洛谷评测 上
587 0
|
机器学习/深度学习 算法 Python
一口气刷完牛客网全部机器学习算法题
一口气刷完牛客网全部机器学习算法题
一口气刷完牛客网全部机器学习算法题
|
算法
算法刷题——7.8
✨今日算法三题 1.学生分数的最小差值 2.乘积小于k的子数组 3.考试的最大困扰度
算法刷题——7.8
|
算法
算法刷题——7.6
算法刷题——7.6
算法刷题——7.6