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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

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

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

追梦之旅你我同行

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

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

前言🙌

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

BC94 反向输出一个四位数 😊

描述

将一个四位数反向输出。

输入描述
一行输入一个整数n1000 <= 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 回文对称数 😊

描述
今天牛牛学到了回文串他想在数字里面找回文即回文数回文数是正着读与倒着读都一样的数比如1221343是回文数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;
}

总结撒花💞

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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6