| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
竟然一遍过了#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int hasExp(string s){
//return the exponent position; if no exponent return -1, if already illegal return -2
int l = s.length();
int hasPt = 0;
for(int i = 0; i < l; i++){
char c = s[i];
if((c>'9' || c<'0') && c!='+' && c!='-' && c!='e' && c!='E' && c!='.') return -2;
if(c=='e' || c=='E') return i;
if(c=='.') hasPt++;
}
if(!hasPt || hasPt > 1) return -2;
return -1;
}
bool isNoExp(string s){
int l = s.length();
if(!l) return false;
if(s[0] == '+' || s[0] == '-'){
s = s.substr(1);
l--;
}
if(!l) return false;
int ptPos = -1;
for(int i = 0; i < l; i++){
if(s[i] == '.'){
ptPos = i;
break;
}
}
if(ptPos <= 0 || ptPos >= l-1) return false;
for(int i = 0; i < l; i++){
if(i==ptPos) continue;
if(s[i] < '0' || s[i] > '9') return false;
}
return true;
}
bool isAExp(string s){
int l = s.length();
if(!l) return false;
if(s[0] == '+' || s[0] == '-'){
s = s.substr(1);
l--;
}
if(!l) return false;
for(int i = 0; i < l; i++){
if(s[i] < '0' || s[i] > '9') return false;
}
return true;
}
bool legal(string s){
int state = hasExp(s);
if(state == -2) return false;
if(state == -1) return isNoExp(s);
string st = s.substr(0, state);
return (isNoExp(st) || isAExp(st)) && isAExp(s.substr(state+1));
}
int main() {
string s;
while(1){
cin >> s;
if(!strcmp("*", s.c_str())){
break;
}
cout << s << " is " << (legal(s) ? "" : "il") << "legal.\n";
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator