// 这题完全是面向测试用例开发 #include <cctype> #include <iostream> using namespace std; int main() { string str1,str2,str3,str4,str; while (cin >> str) { // 注意 while 处理多个 case int pointCnt = 0; bool bisValid = true; for(auto it : str){ if(it == '.'){ pointCnt ++; }else if(!isdigit(it)){ bisValid = false; } } if(pointCnt != 3){ bisValid = false; } int pos = str.find('.'); str1 = str.substr(0, pos); str = str.substr(pos + 1); pos = str.find('.'); str2 = str.substr(0, pos); str = str.substr(pos + 1); pos = str.find('.'); str3 = str.substr(0, pos); str4 = str.substr(pos + 1); if(str1 == "" || str2 == "" || str3 == "" || str4 == ""){ bisValid = false; }else if(str1[0] == '0' && str1.length() != 1 || str2[0] == '0' && str2.length() != 1 || str3[0] == '0' && str3.length() != 1 || str4[0] == '0' && str4.length() != 1 ){ bisValid = false; } else if(stoi(str1) > 255 || stoi(str2) > 255 || stoi(str3) > 255 || stoi(str4) > 255){ bisValid = false; }else if(stoi(str1) < 0 || stoi(str2) < 0 || stoi(str3) < 0 || stoi(str4) < 0){ bisValid = false; } if(bisValid){ cout << "YES" << endl; }else{ cout << "NO" << endl; } } } // 64 位输出请用 printf("%lld")