首页 > 其他分享 >P1553 数字反转(升级版)

P1553 数字反转(升级版)

时间:2024-12-10 12:00:05浏览次数:12  
标签:25 10 反转 样例 整数 find P1553 升级版

题目传送门

P1553 数字反转(升级版)

题目描述

给定一个数,请将该数各个位上数字反转得到一个新数。

这次与 NOIp2011 普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。

  • 整数反转是将所有数位对调。

  • 小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分。

  • 分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母。

  • 百分数的分子一定是整数,百分数只改变数字部分。

输入格式

一个实数 s s s

输出格式

一个实数,即 s s s 的反转数

样例 #1

样例输入 #1

5087462

样例输出 #1

2647805

样例 #2

样例输入 #2

600.084

样例输出 #2

6.48

样例 #3

样例输入 #3

700/27

样例输出 #3

7/72

样例 #4

样例输入 #4

8670%

样例输出 #4

768%

提示

【数据范围】

  • 对于 25 % 25\% 25% 的数据, s s s 是整数,不大于 20 20 20 位;
  • 对于 25 % 25\% 25% 的数据, s s s 是小数,整数部分和小数部分均不大于 10 10 10 位;
  • 对于 25 % 25\% 25% 的数据, s s s 是分数,分子和分母均不大于 10 10 10 位;
  • 对于 25 % 25\% 25% 的数据, s s s 是百分数,分子不大于 19 19 19 位。

细节也太多了!!!AC代码如下

#include<bits/stdc++.h> //万能头文件 
using namespace std;
//定义函数reverse,用于翻转整数。整数特点:最高位数字不为零 
string reverse(string s) {
	string tmp="";
	int i = s.size()-1;
	//翻转后数字同样要最高位数字不为零,因此先去掉尾0 
	while(i>0 && s[i]=='0') i--;  
	//去掉尾0后从后往前依次存储到tmp中 
	while(i>=0) tmp += s[i--];
	return tmp;
}
int main() {
	string s;
	cin>>s;
	char ch='\0';
	if(s.find('.')!=-1 || s.find('/')!=-1 || s.find('%')!=-1) {
		int idx;
		if(s.find('.')!=-1) {
			idx = s.find('.');
			ch = '.';
		} else if(s.find('/')!=-1) {
			idx = s.find('/');
			ch = '/';
		}else{
			idx = s.find('%');
			ch = '%';
		} 
		//符号之前为整数,调用函数进行翻转
		cout<<reverse(s.substr(0, idx))<<ch;
		idx++; //idx标记符号之后翻转起始位置 
		if(ch=='.') { //小数末尾不为0,翻转之前先去首0 
			while(idx<s.size()-1 && s[idx]=='0') idx++;
		}
		cout<<reverse(s.substr(idx, s.size()-idx));
	} else cout<<reverse(s.substr(0, s.size())); //整数,调用函数进行翻转 
	return 0;
}

标签:25,10,反转,样例,整数,find,P1553,升级版
From: https://blog.csdn.net/yuyanjingtao/article/details/144336051

相关文章

  • 使用 Crystal 语言实现图像反转处理
    什么是Crystal语言?Crystal是一种静态类型的编程语言,它的设计目标是提供高性能和良好的可读性。Crystal语言在语法上非常接近Ruby,但它通过编译生成高效的机器代码。Crystal的类型系统在编译时进行检查,这使得它在运行时提供接近C语言的性能,同时保持类似Ruby的简洁性。Cr......
  • 力扣每日打卡 92.反转链表II
    题目:给你单链表的头指针head和两个整数left和right,其中left<=right。请你反转从位置left到位置right的链表节点,返回反转后的链表。示例:输入:head=[1,2,3,4,5],left=2,right=4输出:[1,4,3,2,5]提示:链表中节点数目为n1<=n<=500-500<=Node.......
  • 洛谷 P1553 数字反转(升级版) C语言 stl
    题目:https://www.luogu.com.cn/problem/P1553题目背景以下为原题面,仅供参考:给定一个数,请将该数各个位上数字反转得到一个新数。这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。整数反转是将所有数位对调;小数反转是把整数部分的数反转,再将小数部分......
  • 反转字符串中每个单词的字符顺序,但保持单词之间的相对顺序不变(C++)
     需求:用户输入一行字符(一个英语句子lastweek,Iwenttocinima.),将该行字符按照每个单词逆序输出(即输出:tsalkeew,Itnewotaminic.)。要求1.写一个函数用来实现每个单词的字符顺序颠倒,拿到头和尾,对代码进行遍历(判断是否为单词首字母:当前为字母,前面是空格或者什么都没有;判......
  • 控制反转(IoC)与依赖注入(DI)
    文章目录前言一、控制反转(IoC)1.如果没有控制反转,会怎么样?1.1紧密耦合:1.2可测试性差:1.3代码复用性受限:2.IoC的核心思想与实现机制2.1核心思想:2.2实现机制-配置驱动:2.2.1XML配置方式:2.2.2Java配置方式:2.2.3基于注解的自动扫描:3.IoC容器的职责3.1创建对象:3.2生命......
  • 92. 反转链表 II
    链接:92.反转链表II-力扣(LeetCode)方法一:需要分类讨论/*总体思路就是:pleft指向left所在的节点pright指向right所在的节点beforeleft指向left的前一个节点,或者叫做前面没有反转部分的尾节点behindright指向right的后一个节点,或者叫做后面没有反转部分......
  • 【力扣热题100】—— Day3.反转链表
    你不会永远顺遂,更不会一直年轻,你太安静了,是时候出发了                                                                                        —— 24.12.2206.反转链表......
  • 反转链表详解(C语言)
    文章目录反转链表详解(C语言)一、题目描述二、解题方法1.头插法——创建一个新的链表思路具体操作AC代码(附注释)2.迭代法——双指针实现思路具体操作AC代码(附注释)3.递归法——从前往后反转思路具体操作AC代码(附注释)4.递归法Ⅱ——从后往前反转思路具体操作AC代码(附注释)5......
  • 如何实现字符串反转-多语言
    目录C语言实现方法1:使用指针方法2:使用递归方法3:使用栈Python实现方法1:列表反转方法2:使用切片方法3:使用reversed()函数 方法4:使用递归方法5:使用for循环Java实现方法1:字符串转换成字符数组方法2:使用StringBuilder的revers......
  • 206. 反转链表
    题目自己一开始的思路是对链表的每个节点的val进行更改,然后就没有然后了……没写出来然后看了卡哥的讲解感触最深的点是卡哥是让结点间的指向发生改变(换句话说,改变了节点的next),然后顺着这个思路卡哥给出了两个方法:双指针法和递归法。特别要给卡哥的视频讲解点个大大的赞,所有......