字符串形式的整数,(可能包换前缀0;1<=length<=10),先将这个字符串拆分成两部分,接着可以在这两部分中分别形成一个整数或者小数。找出所有经“拆分”和“变化”两次操作后可能的组合的数目。
要求:
1)对于新形成的整数和小数,不可包含多余的的前缀0,比如010和010.1,这些都是不合法的;
2)对于小数,不可包含多余的后缀0,比如0.10不合法;
3).1和1.这样的小数不合法。
输入描述:
输入为一行,包含一个字符串形式的正整数。
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int valid(string s)
{
int size = s.length();
if (size == 0)
{
return 0;
}
else if (size == 1)
{
return 1;
}
else if (s[0] == '0'&&s[size - 1] == '0')
{
return 0;
}
else if(s[0] == '0')
{
return 1;
}
else if (s[size - 1] == '0')
{
return 1;
}
else
{
return size;
}
}
int main() {
string s;
while (cin >> s)
{
int sum = 0;
for (int i = 0; i < s.length(); i++)
{
string str1 = s.substr(0, i);
cout << str1<<endl;
string str2 = s.substr(i, s.length());
cout << str2<<endl;
sum += valid(str1)*valid(str2);
}
cout << sum;
}
}