HDU 2043 비밀번호 -- 물 문제 지만
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cctype>
#include <set>
using namespace std;
#define CLR(c,v) memset(c,v,sizeof(c))
#define PI 3.1415927
const double pi = acos(-1.0);
const double fo = 0.00000001;
template < typename _T>
_T Max(_T a,_T b){
return (a>b)?(a):(b);
}
template < typename _T>
_T Abs(_T a){
return (a>0)?(a):(-a);
}
template <typename _T>
_T gcd(_T a, _T b){
if(b == 0) return a;
return gcd(b, a % b);
}
struct _D{
int x,y;
_D(int x,int y):x(x),y(y){}
_D(){}
void input(){
scanf("%d%d",&x,&y);
}
bool operator < (const _D& Val)const{
if(y != Val.y)
return y < Val.y;
return x > Val.x;
}
};
void swap(char &a,char &b){
char tmp;
tmp = a;
a = b;
b = tmp;
}
bool is_prime(int a){
if(a <= 1)return false;
if(a == 2)return true;
int bound = sqrt(a*1.0);
for(int i = 2; i <= bound ; i++){
if(a % i == 0)return false;
}
return true;
}
int find(int goal,int num[],int l,int r){
int mid = (l+r)/2;
if(goal == num[mid])return mid;
if(l >= r) return -1;
if(goal < num[mid]) return find(goal,num,l,mid-1);
if(goal > num[mid]) return find(goal,num,mid+1,r);
}
long long PowerRemainder(int a,int p,int n){ // quick calculate (a ^ p ) % n
if (p == 1){return a % n;}
if (p == 0){return 0;}
long long r = PowerRemainder(a,p>>1,n);
// r^5 = r^3 * r^2 % n = r^2*r * r^2 % n ; r^4 = r^2 * r^2 % n
return (p & 1)?((r * (a%n)) % n * r % n):(r * r % n);
}
int divisor_sum(int num){
int bound = sqrt(num*1.0);
int sum = 1;
for(int i = 2 ; i <= bound ; i++){
if(num%i)continue;
sum += i + ((num/i != i)?(num/i):(0)) ;
}
return sum;
}
bool is_sym(char c){
char s[] = "~!@#$%^";
for(int i = 0 ; s[i] != '\0' ; i++)
if(c == s[i]) return true;
return false;
}
bool is_upperalp(char c){
return ('A' <= c) && (c <= 'Z');
}
bool is_loweralp(char c){
return ('a' <= c) && (c <= 'z');
}
bool is_num(char c){
return ('0' <= c) && (c <= '9');
}
int main()
{
int Ncase;cin >> Ncase;
while(Ncase--){
char str[1000];unsigned int ok = 0;
cin >> str;
const int NUM = 1;
const int SYM = 1<<1;
const int ALP = 1<<2;
const int Alp = 1<<3;
int len = 0;
for(int i = 0 ; str[i] != '\0' ; i++ ){
if(is_num(str[i])){
ok |= NUM;
}else if(is_sym(str[i])){
ok |= SYM;
}else if(is_upperalp(str[i])){
ok |= ALP;
}else if(is_loweralp(str[i])){
ok |= Alp;
}
len ++;
}
ok = ~ok;
ok &= 15; // 32 , 1
if( (len>=8)&&(len <= 16) && (!ok || !(ok^NUM) || !(ok^SYM) || !(ok^ALP) || !(ok^Alp)) ){
cout << "YES" << endl;
}else{
cout << "NO" << endl;
}
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.