pat 乙级1024 科学计数法关于stl中size()的一些思考即测试点六,无符号整数问题
来,先看题目:1024 科学计数法
分数 20 作者 HOU, Qiming 单位 浙江大学
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。
输入格式:
每个输入包含 1 个测试用例,即一个以科学计数法表示的实数 A。该数字的存储长度不超过 9999 字节,且其指数的绝对值不超过 9999。
输出格式:
对每个测试用例,在一行中按普通数字表示法输出 A,并保证所有有效位都被保留,包括末尾的 0。
输入样例 1:
+1.23400E-03
输出样例 1:
0.00123400
输入样例 2:
-1.2E+10
输出样例 2:
-12000000000
我有两种解决方法,一种是随着读的过程就打印出来,一种是存在字符串里。废话不多说,先看代码
#include<bits/stdc++.h>
using namespace std;
int main(){
string a,b;cin>>a;
if(a[0]=='-')cout<<"-";
//int i;//i-2位数,小数i-3
int num;
int pos=a.find('E');
if(a[pos+1]=='-')num=(-1)*stoi(a.substr(pos+2));
else num=stoi(a.substr(pos+2));
int youxiaowei=-pos+3+num;
for(int i=0;i<pos;i++){
if(isdigit(a[i]))b=b+a[i];
}
int k=youxiaowei;
k=k+b.size();
if(youxiaowei<0){
if(k<=0){
cout<<"0.";
for(int i=0;i<-1*k;i++)cout<<"0";
cout<<b<<endl;
}
else{//测试点3,4 测试样例:+1.234E+01;
int cnt=0;
while(k-cnt!=0){
cout<<b[cnt++];
}
cout<<"."<<b.substr(cnt);
}
}
else{
cout<<b;
for(int i=0;i<(youxiaowei);i++)cout<<"0";
cout<<endl;
}
return 0;
}
// #include<bits/stdc++.h>
// using namespace std;
// int main(){
// string a,b;cin>>a;
// if(a[0]=='-')cout<<"-";
// //int i;//i-2位数,小数i-3
// int num;
// int pos=a.find('E');
// if(a[pos+1]=='-')num=(-1)*stoi(a.substr(pos+2));
// else num=stoi(a.substr(pos+2));
// int youxiaowei=-pos+3+num;
// for(int i=0;i<=pos;i++){
// if(isdigit(a[i]))b=b+a[i];
// }
// int k=youxiaowei;
// k=k+b.size();
// if(youxiaowei<0){
// if(k<=0){
// for(int i=0;i<-1*k;i++)b="0"+b;
// b="0."+b;
// }
// else{
// b=b.substr(0,b.size()+youxiaowei)+"."+b.substr(b.size()+youxiaowei);
// }//注意b.size()是一个无符号整数,如果它直接和另一个数相运算且结果小于0;则会出错测试点6
// }
// else{
// for(int i=0;i<(youxiaowei);i++)b+="0";
// }
// for(int i=0;b[i]=='0';){
// if(b.find('.')==1)break;
// else b.erase(0,1);
// }
// if(b!="")
// cout<<b;
// else cout<<0<<endl;
// return 0;
// }
总结:一个无符号整数,如果它直接和另一个数相运算且结果小于0。运算得到的结果就不是小于0,而是它的存储的补码所构成的无符号整数,是一个非常大的数。所以,使用size()的时候当万分注意
pat 乙级1024 科学计数法关于stl中size()的一些思考即测试点六,无符号整数问题的更多相关文章
- PAT乙级 1024. 科学计数法 (20)
1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...
- PAT乙级 1024. 科学计数法 (20)(未通过全部测试,得分18)
1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...
- PAT乙级 1024 科学计数法
思路 1.尝试失败:一开始想打算把结果直接存在一个字符串中,后来发现当指数大于0的时候还需要分别考虑两种情况,工程量巨大,尝试失败,于是借鉴了其他大佬思路,写出了ac代码 2.ac思路:首先取指数的绝 ...
- PAT Basic 1024 科学计数法 (20 分) Advanced 1073 Scientific Notation (20 分)
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...
- C#版 - PAT乙级(Basic Level)真题 之 1024.科学计数法转化为普通数字 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. PAT Bas ...
- PAT 1024 科学计数法 (20)(精简版代码+思路+推荐测试样例)
1024 科学计数法 (20)(20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+, ...
- PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20)
PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20) http://www.patest.cn/contests/pat-b-practise/1024 ...
- PAT-乙级-1024. 科学计数法 (20)
1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...
- P 1024 科学计数法
转跳点:
- PAT——1024. 科学计数法
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位 ...
随机推荐
- Windows下使用VSCode搭建IDA Python脚本开发环境
由于本人是VSCode的重度沉迷用户,需要写代码时总会想起这个软件,因此选择在VSCode中搭建IDA Python的开发环境 本文适用的环境如下: 1.操作系统 windows 2.Python3 ...
- 三个小任务掌握List、Set、Map
任务一: ArrayList.Vector 和 LinkedList 都实现了 List 接口,对它们分别进行如下操作后比 较它们的不同,然后形成初步耗时报告(三种不同 List 的耗时): 追加元素 ...
- uniapp中封装一个弹框组件
第一步:在components下创建 popup.vue子组件: popup.vue中 <template> <view> <view class="popus ...
- 为什么 java 容器推荐使用 ExitOnOutOfMemoryError 而非 HeapDumpOnOutOfMemoryError ?
前言 好久没写文章了, 今天之所以突然心血来潮, 是因为昨天出现了这样一个情况: 我们公司的某个手机APP后端的用户(customer)微服务出现内存泄露, 导致OutOfMemoryError, 但 ...
- python之路41 前端页面尝试 丑出新高度
边框 p {/* 左边 */ font-size: 48px; border-left-width: 5px; border-left-style: dotted; /*点点边框*/ border-l ...
- 我们来汉化IntelliJ IDEA
(原发于 GitHub Pages,2018-10-13 13:51:09) 两年前我从一名光荣的C++程序员专业为PHP程序员以后,告别了世界第一IDE Visual Studio,改用当时觉得特别 ...
- [LeetCode]爬楼梯
题目 假设你正在爬楼梯.需要 n 步你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解释: ...
- Linux音频采集和在国产化平台中遇到的坑(一)
Linux音频采集和在国产化平台中遇到的坑(一) 最近在做一个国产化平台的软件项目的开发,是基于国产芯片的银河麒麟系统.其中有一个重要模块,是采集和播放音频数据,播放不用多说了,采集的话,包括采集麦克 ...
- 记一次CVE实战挖掘记录
CVE实战挖掘记录 前一段时间在学习代码审计,然后为了学习就开始在github上面找开源的项目进行练手学习代码审计,这样就可以获取CVE编号. 0x01 cve编号获取流程 首先登录CVE官方网站,选 ...
- 使用 flexible.js + rem 制作苏宁移动端首页
一.技术选型 二.搭建相关文件夹 三.设置视口标签以及引入初始化样式文件和js文件 四.body 样式 五.rem 适配方案二 body样式修改 index.css body { min-width: ...