2023年大年初一 —— 牛客网刷题经验分享~😎
- 大年初一 —— 牛客网刷题经验分享~😎)
- 前言🙌
- BC94 反向输出一个四位数 😊
- BC95 小乐乐与进制转换 😊
- BC96 [NOIP2015]金币😊
- BC97 回文对称数 😊
- 总结撒花💞
大年初一 —— 牛客网刷题经验分享~😎)
😎博客昵称:博客小梦~
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱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;
}
总结撒花💞
本篇文章旨在分享今日刷题的经验。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘