#include <bits/stdc++.h>
using namespace std;
//将字符串用'.'分隔开
vector<string> split(string input) {
	vector<string> parts;
	string temp;
	for(int i = 0; i<input.length(); i++) {
		if(input[i] == '.') {
			parts.push_back(temp);
			temp.clear();
		} else {
			temp+=input[i];
		}
	}
	parts.push_back(temp);
	return parts;
}
int S2I(string input) {
	int res = 0;
	int weight = 1;
	for(int i = input.size()-1; i >= 0; i--) {
		res = res + (input[i] - '0') * weight;
		weight = weight * 10;
	}
	return res;
}
bool isValid(vector<string> parts) {
	for(int i = 0; i < parts.size(); i++) {
		int num = S2I(parts[i]);
		if(num > 255 || num < 0)return false;
	}
	return true;
}

int main() {
	string input;
	while(cin>>input) {
		vector<string> parts = split(input);
//		for(int i = 0; i < parts.size(); i++) {
//			cout<<parts[i]<<endl;
//		}
		if(isValid(parts)) {
			cout<<"Yes!"<<endl;
		} else {
			cout<<"No!"<<endl;
		}

	}
	return 0;
}

1、自定义S2I函数

2、学会分割字符串的方案