飞道的博客

2023年大年初一 —— 牛客网刷题经验分享~

453人阅读  评论(0)

大年初一 —— 牛客网刷题经验分享~😎)

   
😎博客昵称:博客小梦~
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘

前言🙌

    哈喽各位友友们😊,我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下!😘我仅已此文,给大家分享大年初一牛客网刷题分享~都是精华内容,可不要错过哟!!!😍😍😍

BC94 反向输出一个四位数 😊

描述

将一个四位数,反向输出。

输入描述:
一行,输入一个整数n(1000 <= n <= 9999)。
输出描述:
针对每组输入,反向输出对应四位数。
示例1
输入:

1234

输出:

4321

解题代码: 😍

//递归写法
#include<stdio.h>
void Inversion_printf(int n)
{
   
	if (n > 9)
	{
   
		printf("%d", n % 10);
		Inversion_printf(n / 10);
	}
	else
	{
   
		printf("%d", n);
	}
}
int main()
{
   
	int n = 0;
	scanf("%d", &n);
	Inversion_printf(n);
	return 0;
}

//非递归写法
#include<stdio.h>
int main()
{
   
	int n = 0;
	scanf("%d", &n);
	while (n)
	{
   
		printf("%d", n % 10);
		n /= 10;
	}
	return 0;
}

 

BC95 小乐乐与进制转换 😊

描述

小乐乐在课上学习了二进制八进制与十六进制后,对进制转换产生了浓厚的兴趣。因为他的幸运数字是6,所以他想知道一个数表示为六进制后的结果。请你帮助他解决这个问题。
输入描述:

输入一个正整数n (1 ≤ n ≤ 109)
输出描述:
输出一行,为正整数n表示为六进制的结果
示例1
输入:

6

输出:

10

示例2
输入:

120

输出:

320

递归方法实现思路分析:😍

  • 非递归方法,可以巧妙借助一个数组来存储来记录6进制数的每一位数,然后逆序输出。
  • 要熟练掌握和运用取模运算的技巧。
  • 还是要类比其他我们熟悉的进制间的转换,然后推导出6进制的转换规律。

递归方法画图分析~: 😍

解题代码: 😍

//递归方法:
#include<stdio.h>
void print(int n)
{
   
	if (n > 5)
		print(n / 6);
	printf("%d", n % 6);
}
int main()
{
   
	int n = 0;
	scanf("%d", &n);
	print(n);
	return 0;
}
非递归方法:
#include <stdio.h>
int main()
{
   
    int n;
    int a[10] = {
   0};
    scanf("%d",&n);
    int i = 0;
    while(n != 0){
   
        a[i] = n % 6;
        n /= 6;
        i++;
    }
    for(int j = i - 1 ; j >= 0; j--){
   
        printf("%d",a[j]);
    }
}


 

BC96 [NOIP2015]金币😊

描述
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币。
请计算在前K天里,骑士一共获得了多少金币。
输入描述:
输入只有1行,包含一个正整数K,表示发放金币的天数。
输出描述:
输出只有1行,包含一个正整数,即骑士收到的金币数。
示例1
输入:

6

输出:

14

说明:

骑士第一天收到一枚金币;第二天和第三天,每天收到两枚金币;第四、五、六天,每天收到三枚金币。因此一共收到1+2+2+3+3+3=14枚金币。

示例2
输入:

1000

输出:

29820

备注:

对于100%的数据,1 ≤ K ≤ 10,000。

解题代码~: 😍

这里需要注意的是:当count记录的每日金币结算次数和天数一样,则就可以停止了

#include<stdio.h>
int main()
{
   
    int k = 0;
    int count = 0;
    int i = 0;
    int j = 0;
    int sum = 0;
    scanf("%d",&k);
    for (i = 1; i <= k; i++)
    {
   
        for (j = 0; j < i; j++)
        {
   
            sum += i;
            count++;
            if(k == count)//当count记录的每日金币结算次数和天数一样,则就可以停止了
            break;
        }
        if(k == count)//当count记录的每日金币结算次数和天数一样,则就可以停止了
        break;
    }
    printf("%d",sum);
    return 0;
}

 

BC97 回文对称数 😊

描述
今天牛牛学到了回文串,他想在数字里面找回文,即回文数,回文数是正着读与倒着读都一样的数,比如1221,343是回文数,433不是回文数。请输出不超过n的回文数。
输入描述:
输入一个整数n(1 <= n <= 100000)
输出描述:
从1开始按从小到大的顺序输出所有回文数
示例1
输入:

10

输出:

1
2
3
4
5
6
7
8
9
画图分析~: 😍

解题代码~: 😍

#include <stdio.h>
void print(int t, int n)
{
   
    int num = n;
    while (num)
    {
   
        t = t * 10 + num % 10;
        num /= 10;
    }
    if (t == n)
        printf("%d\n", n);

}
int main()
{
   
    int  n = 0;
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
    {
   
        int t = 0;
        print(t, i);
    }
    return 0;
}

 

总结撒花💞

   本篇文章旨在分享今日刷题的经验。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘


转载:https://blog.csdn.net/weixin_70261953/article/details/128750942
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场