ACM_给你100块钱
给你100块钱
Time Limit: 2000/1000ms (Java/Others)
Problem Description:
小光见到昨晚旭能神没拿到一血,又损失了一百块,很同情他。但是为了不表现出自己在同情他,于是对他说:“我最近碰到了难题,一直没有AC,如果你能第一个帮我AC掉,我就给你100块钱。题目就是:给定一个实数,输出它的相反数。”
Input:
输入包含多组测试数据,每组数据包含一个实数(100位以内)。输入的数据最多只包含一个负号。
Output:
对于每组数据,输出它的相反数,占一行。
Sample Input:
0
-0.1
00.10
Sample Output:
0
0.1
-0.1
解题思路:处理字符串,各种情况要面面俱到。很容易想到,用另外的数组a来保存相反数,每一次输入都将a数组元素全部赋为'\0',这有利于直接输出最后的新字符串。先判断第一个字符是否为'-',是的话先用flag标记true,然后去掉前导0,之后要判断i==len?表示全部为0(包含'-'、'+'、'.',但其实表示的是0)接下来判断是否有小数点,有点话就去掉尾部的0。剩下的分4种情况:
一、当s[i]!='.'时,如果flag为false,则a[k++]='-'先标记负号;①如果s[j]!='.',直接从i~j拷贝给a数组;②否则,先--j,去掉多余的'.',对剩下的整数部分进行拷贝;
二、当s[i]=='.'时,同样如果flag为false,则a[k++]='-'先标记为负号;③如果s[j]!='.',先把0给整数部分,接下来直接拷贝i~j即可;④否则说明此时相当于0,直接a[k]='0'即可。
AC代码:
#include<bits/stdc++.h>
using namespace std;
bool ispoint(char ch[],int len){ //用来判断是否有小数点,这样才可以去掉尾部多余的0
for(int i=;i<len;++i)
if(ch[i]=='.')return true;
return false;
}
int main()
{
char s[],a[];
int i,j,k,len;
bool flag;
while(cin>>s){
memset(a,'\0',sizeof(a));
k=i=;len=strlen(s);flag=false;
if(s[i]=='-'){flag=true;++i;}
while(s[i]=='')++i;
if(i==len){ //判断是否都为0的情况
cout<<""<<endl; //是的话直接输出0
continue; //继续输入
}
j=len-;
if(ispoint(s,len)){ //有小数点的话才去掉后导0
while(s[j]=='')--j;
}
if(s[i]!='.'){
if(!flag)a[k++]='-';
if(s[j]!='.'){
while(i<=j)a[k++]=s[i++];
}
else{
--j;
while(i<=j)a[k++]=s[i++];
}
}
else{ //表示当前为'.'
if(s[j]!='.'){
if(!flag)a[k++]='-';
a[k++]='';
while(i<=j)a[k++]=s[i++];
}
else a[k]=''; //直接赋值为'0'
}
cout<<a<<endl;
}
return ;
}
测试数据:输入:.1 00 -.2 10 -0.0 0.0
对应的输出:-0.1 0 0.2 -10 0 0
ACM_给你100块钱的更多相关文章
- 报表软件公司悬赏 BUG,100块钱1个的真实用意
上一篇文章我讲到,报表软件FineReport一反常态,做了个<提BUG,拿现金>的活动,1个BUG,100块钱.纵览软件行业,如金蝶用友浪潮IBM微软等国内外巨头,均没有这样的举动去征集 ...
- 后台开发 3个题目 array_chunk, 100块钱找零钱(动态规划 dynamic programming), 双向循环链表 llist 删除节点
1. array_chunk 实现 http://php.net/manual/en/function.array-chunk.php <?php function my_array_chunk ...
- 报表软件公司高价悬赏BUG,100块1个我真是醉了
一直在用帆软的报表软件FineReport来做项目,也一直关注着这个公司的发展. 看到<提BUG,拿奖金>的这个活动,有些疑问和思考. 一般FineReport新版本在正式发布前,都会经过 ...
- JAVA题目:小芳的妈妈每天给她2.5元,她都会存起来,但是,每当这一天是存钱的第五题或者5的倍数的话,她都会去用掉6块钱。 问:至少经过多少天可以存到100块?
1 /*题目:小芳的妈妈每天给她2.5元,她都会存起来, 2 但是,每当这一天是存钱的第五题或者5的倍数的话, 3 她都会去用掉6块钱. 4 问:至少经过多少天可以存到100块? 5 */ 6 /*分 ...
- 为了讲明白继承和super、this关键字,群主发了20块钱群红包
摘要:以群主发红包为例,带你深入了解继承和super.this关键字. 本文分享自华为云社区<群主发红包带你深入了解继承和super.this关键字>,作者:共饮一杯无 . 需求 群主发随 ...
- 大三那年在某宝8块钱买的.NET视频决定了我的职业生涯
前言 谨以此文献给那些还在大学中迷茫的莘莘学子们! 韩愈在<师说>中提出了作为师者应该做的三件事:传道.授业.解惑. 1.传道:培养学生的道德观 2.授业:传授学生专业技能 3.解惑:解答 ...
- 自己做站点(二) 20块钱搞定一个企业站:域名&空间申请
域名注冊的话,推荐大家用新网,由于申请费用确实非常低,但续费的价格还是比較高的,所以不妨多申请几年.打开站点: http://www.xinnet.com/ 注冊一个帐号,然后申请域名,你能够看到,费 ...
- 磐创AI GPU租用平台上线,1小时不到1块钱
>> 小白也能看懂的PyTorch从入门到精通系列 << 今天磐创AI GPU租赁平台上线了!!!为大家解决用GPU难的问题!一块10G显存的GPU,1小时租用费用不到1块钱, ...
- JS计算十万块钱 分31期 利息万分之五 每个月的还款数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- 【深度探索c++对象模型】Function语义学之虚函数
虚函数的一般实现模型:每一个class有一个virtual table,内含该class中的virtual function的地址,然后每个object有一个vptr,指向virtual table. ...
- Linux性能诊断工具
vmstat:虚拟内存状况 –swpd free buff cache si so in cs 參考:http://www.cnblogs.com/ggjucheng/archi ...
- SQL 连接(JOIN)
SQL 连接(JOIN) SQL join 用于把来自两个或多个表的行结合起来. SQL JOIN SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段. 最常见的 JO ...
- Linux经常使用命令(更新中)
文件类: 1.创建目录:mkdir 例:sudo mkdir test 2.创建空文件:touch 例:sudo touch test.txt 3.删除文件:rm 删除文件不须要确认:rm -f 例: ...
- 项目实战之玩转div+css制作自己定义形状
项目需求 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/diss ...
- java-组合优于继承
组合和继承.都能实现对类的扩展. 差别例如以下表所看到的 组合 继承 has-a关系 is-a关系 执行期决定 编译期决定 不破坏封装,总体和局部松耦合 破坏封装,子类依赖父类 支持扩展,任意添加组合 ...
- ==和equals的差别
== 和 Equals 的差别 1. == 是一个运算符. 2.Equals则是string对象的方法.能够.(点)出来. 我们比較无非就是这两种 1.基本数据类型比較 2.引用对象比較 1.基本数据 ...
- 目前使用过的各大厂商rtsp取流的url
目前使用过的各大厂商取流规则是在实际的工作中遇到的相关视频接入问题,通过rtsp协议接入视频数据的一些记录,其中的图片可能来源于网络,内容部分来源于网络,本人仅仅是对相关内容作了汇总. 海康RTSP取 ...
- 密码过期导致Oracle process耗尽问题
oracle忽然连不上! 大致是报这样的错: ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程序 ORA-12520: TNS: 监听程序无法为请求的服务器类型找到可用的处理 ...
- What are some advantages of using Node.js over a Flask API?
https://www.quora.com/What-are-some-advantages-of-using-Node-js-over-a-Flask-API Flask is a Python w ...