您的位置:首页 > 其它

<NOIP> 19 . P1553 数字反转(升级版)

2017-06-30 15:44 267 查看
题解:这是洛谷的第19道题目,这个题目的Testcase有很多都想不到,可谓千奇百怪。

注意

1 . 整数的最高位不能为0;

2 . 反转后的小数的整数部分的最高位不能为0,小数部分的末尾不能为0,除非小数部分都是0,则保留一个0;

3 . 反转后的分数的分子和分母不用约分,同样,分子和分母各自的最高位都不为0;

4 . 小数的输入存在这种测试用例:1020.0101000  ,输出为:201.101

5 . 反转后的百分数的整数部分的最高位不为0;

6 . 0反转后为0;

7 . 需要在输入字符串的时候,需要将‘.’、‘/’、‘%’提取出来,小数需要将整数部分和小数部分都分别提取出来,分数需要将分子和分母分别提取;

源代码:

#include <iostream>
#include <string.h>
#include <sstream>
#include <stdlib.h>

using namespace std;

void Filp1(const std::string str,int size)
{
string str1;
bool zeroornot = true;

for (size_t i = 0; i < size; i++)
{
if (str[i] != '0')
zeroornot = false;
}

if (zeroornot)
cout << "0";
else
{
bool judge = true;
for (int i = size - 1; i >= 0; i--)
str1 += str[i];
for (size_t i = 0; i < size; i++)
{
while (str1[i] == '0' && judge)
i++;

cout << str1[i];
judge = false;
}
}
}

void Filp2(const std::string str, int size)
{
string str1 = "";
bool zeroornot = true;

for (size_t i = 0; i < size; i++)
{
if (str[i] != '0')
zeroornot = false;
}

if (zeroornot)
cout << "0";
else
{
bool judge = true;
for (size_t i = 0; i < size; i++)
{
while (str[i] == '0' && judge)
i++;

str1 += str[i];
judge = false;
}

for (int i = str1.size()-1; i >= 0; i--)
cout << str1[i];
}
}

int main()
{
string input;
string first, second;
cin >> input;

string c;
int inputsize = input.size();
for (int i = 0; i < inputsize; i++)
{
if (input[i] == '0' || input[i] == '1' || input[i] == '2' || input[i] == '3' || input[i] == '4' ||
input[i] == '5' || input[i] == '6' || input[i] == '7' || input[i] == '8' || input[i] == '9')
second += input[i];
else
{
c = inpu
4000
t[i];
first = second;
second = "";
}
}

if (c == ".")
{
Filp1(first, first.size());
cout << c;
Filp2(second, second.size());
}
else if (c == "/")
{
Filp1(first, first.size());
cout << c;
Filp1(second, second.size());
}
else if (c == "%")
{
Filp1(first, first.size());
cout << c;
}
else
Filp1(second, second.size());

cout << endl;
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: