文章目录
💥前言
☀️大家好☀️,我是烧蔬菜😁,最近做算法题可以感受到自己确实有点懈怠了😐,所以给自己定一个百日刷题计划,希望自己可以一直坚持下去💪,每天做题,也把题题解写下,记录自己每天的做题痕迹来激励提升自己获取正反馈✊,并且与大家分享下去😁
😉解题报告
💥 [NOIP2011 普及组] 数字反转
biu~
☘️ 题目描述☘️
**给定一个整数 N N N**,请**将该数各个位上数字反转得到一个新数**。新数也应**满足整数的常见形式**,即**除非给定的原数为零**,否则**反转后**得到的**新数的最高位数字不应为零**(参见样例 2)。 **输入格式** 一个整数 N N N。 **输出格式** 一个整数,表示反转后的新数。 **样例 1** 样例输入 1123样例输出 1321**样例 2** 样例输入 2-380样例输出 2-83
🤔一、思路:
(1)反转数除非本身是
0
0
0,否则最高位不得为
0
0
0;
(2)负号原地不动,罚站.ing
😎二、源码:
#include<iostream>
using namespace std;int n;
string ret;//(1)int flag =0;//(2)intmain(){
cin >> n;if(n <0){//(3)
ret +='-';
n *=-1;}if(n ==0){//(4)
ret +='0';}while(n){//(5)即n % 10 || n / 10if(n %10|| flag){//(6)
ret += n %10+48;
flag =1;}else{}
n /=10;//(7)}
cout << ret;return0;}
😮三、代码分析:
(1)创建一个字符串类型,方便存储反转后的数字
(2)判断反转后最高位,即第一位数是否为
0
0
0;
(3)若输入负整数,将负号存入
r
e
t
ret
ret内,并将负整数变为正整数
(4)若输入整数为
0
0
0,则将
0
0
0存入
r
e
t
ret
ret,之后输出;
(5)
n
n
n的位数没除尽则进行循环
(6)当前位数与
f
l
a
g
flag
flag都为
0
0
0时,不会存入
r
e
t
ret
ret内
(7)消去一位
💥 [NOIP1999 普及组] Cantor 表
biu~
☘️ 题目描述☘️
现代数学的著名证明之一是 Georg Cantor 证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的: 1 / 1 1/1 1/1 , 1 / 2 1/2 1/2 , 1 / 3 1/3 1/3 , 1 / 4 1/4 1/4, 1 / 5 1/5 1/5, … 2 / 1 2/1 2/1, 2 / 2 2/2 2/2 , 2 / 3 2/3 2/3, 2 / 4 2/4 2/4, … 3 / 1 3/1 3/1 , 3 / 2 3/2 3/2, 3 / 3 3/3 3/3, … 4 / 1 4/1 4/1, 4 / 2 4/2 4/2, … 5 / 1 5/1 5/1, ……
我们以 Z 字形给上表的每一项编号。第一项是 1 / 1 1/1 1/1,然后是 1 / 2 1/2 1/2, 2 / 1 2/1 2/1, 3 / 1 3/1 3/1, 2 / 2 2/2 2/2,… **输入格式** 整数 N N N( 1 ≤ N ≤ 1 0 7 1 \leq N \leq 10^7 1≤N≤107)。 **输出格式** 表中的第 N N N 项。 **样例 1** 样例输入 17样例输出 11/4
🤔一、思路:



(1)可以得出规律:
1)行数与该行拥有数字的数量一致,并依次递增,可知第
N
N
N项数在图中第几行的,第几位
2)奇偶行分子分母位置相反,可用
i
f
if
if语句进行判断
😎二、源码:
#include<iostream>
using namespace std;int x, y;//(1)int n;//(2)int row =1;//(3)int shift;//(4)intmain(){scanf("%d",&n);while(n > row){//(5)
n -= row;
row++;}
shift = n;if(row %2){//奇数 //(6)
x = row - shift +1;
y = shift;printf("%d/%d", x, y);}else{//偶数
x = shift;
y = row - shift +1;printf("%d/%d", x, y);}return0;}
😮三、代码分析:
(1)分子,分母
(2)第n项数
(3)行
(4)移动数
(5)若
n
>
r
o
w
n>row
n>row,则寻找
n
n
n所在
r
o
w
row
row行
(6)判断所在行是奇数还是偶数,分子与分母在所在行的位置上移动
s
h
i
f
t
shift
shift或
r
o
w
−
s
h
i
f
t
+
1
row-shift+1
row−shift+1
🤗 鸡汤来咯:
生活就像海洋,只有意志坚强的人,才能到达彼岸
本文转载自: https://blog.csdn.net/m0_64141176/article/details/127300274
版权归原作者 烧蔬菜 所有, 如有侵权,请联系我们删除。
版权归原作者 烧蔬菜 所有, 如有侵权,请联系我们删除。