思路不难 纯练习稳定性
#include <iostream>
#include <cctype>
using namespace std;
int main() {
string password;
int score = 0;
cin >> password;
int n = password.size();
//密码长度
if(n <= 4) score += 5;
else if(n <= 7) score += 10;
else score += 25;
bool has_upper = false, has_lower = false;
int count_digit = 0, count_symbol = 0;
for(const char& c: password) {
if(islower(c)) has_lower = true;
else if(isupper(c)) has_upper = true;
else if(isdigit(c)) ++count_digit;
else ++count_symbol;
}
bool has_one_alpha = (has_lower && !has_upper) || (!has_lower && has_upper);
bool has_two_alpha = has_lower && has_upper;
//字母
if(has_two_alpha) score += 20;
else if(has_one_alpha) score += 10;
//数字
if(count_digit > 1) score += 20;
else if(count_digit == 1) score += 10;
//符号
if(count_symbol > 1) score += 25;
else if(count_symbol == 1) score += 10;
//奖励
if(has_two_alpha && count_digit && count_symbol) score += 5;
else if((has_lower || has_upper) && count_digit && count_symbol) score += 3;
else if((has_lower || has_upper) && count_digit) score += 2;
string ans;
if(score >= 90) ans = "VERY_SECURE";
else if(score >= 80) ans = "SECURE";
else if(score >= 70) ans = "VERY_STRONG";
else if(score >= 60) ans = "STRONG";
else if(score >= 50) ans = "AVERAGE";
else if(score >= 25) ans = "WEAK";
else ans = "VERY_WEAK";
cout << ans << endl;
return 0;
}



京公网安备 11010502036488号