주말에 수연이 결혼식참석차 부산다녀오느라 참석을 못했다.
250 easy. 문안한 문제.
class MultiNumber
{
public:
string toStr(int num)
{
stringstream s;
s << num;
return s.str();
}
string check(int num)
{
string s = toStr(num);
for(int i = 1; i<s.size(); i++)
{
int a = 1, b = 1;
REP(j, i)
a *= s[j] - '0';
for(int j=i; j < s.size(); j++)
b *= s[j] - '0';
if( a == b ) return "YES";
}
return "NO";
}
};
500 mid
: 확률에 대한 문제. 확률 개념이 가물가물해서 네이버에서 간단한 이론 조금 둘러본 후에 풀었다.
class PrimeSoccer
{
public:
bool is_prime(int n)
{
if( n == 2 ) return true;
if( n < 2 || n % 2 == 0 ) return false;
for(int i = 3; i*i <= n; i++)
{
if( n != i && n % i == 0) return false;
}
return true;
}
double getProbability(int skillOfTeamA, int skillOfTeamB)
{
double sum_A = 0, sum_B = 0;
double sA = skillOfTeamA;
double sB = skillOfTeamB;
//1~18까지 넣을 골수가 prime이 아닌 경우
for(int i = 0; i <= 18; i++)
{
if( is_prime(i) ) continue;
double pA = 1, pB = 1;
for(int j=0; j < i; j++)
{
pA *= (sA/100.0);
pB *= (sB/100.0);
}
for(int j=i; j < 18; j++)
{
pA *= ((100-sA)/100.0);
pB *= ((100-sB)/100.0);
}
for(int j= 18; j>18-i; j--)
{
pA *= j;
pB *= j;
}
for(int j= 2; j<= i; j++)
{
pA /= j;
pB /= j;
}
sum_A += pA;
sum_B += pB;
}
return 1 - sum_A * sum_B;
}
};
250 easy. 문안한 문제.
class MultiNumber
{
public:
string toStr(int num)
{
stringstream s;
s << num;
return s.str();
}
string check(int num)
{
string s = toStr(num);
for(int i = 1; i<s.size(); i++)
{
int a = 1, b = 1;
REP(j, i)
a *= s[j] - '0';
for(int j=i; j < s.size(); j++)
b *= s[j] - '0';
if( a == b ) return "YES";
}
return "NO";
}
};
500 mid
: 확률에 대한 문제. 확률 개념이 가물가물해서 네이버에서 간단한 이론 조금 둘러본 후에 풀었다.
class PrimeSoccer
{
public:
bool is_prime(int n)
{
if( n == 2 ) return true;
if( n < 2 || n % 2 == 0 ) return false;
for(int i = 3; i*i <= n; i++)
{
if( n != i && n % i == 0) return false;
}
return true;
}
double getProbability(int skillOfTeamA, int skillOfTeamB)
{
double sum_A = 0, sum_B = 0;
double sA = skillOfTeamA;
double sB = skillOfTeamB;
//1~18까지 넣을 골수가 prime이 아닌 경우
for(int i = 0; i <= 18; i++)
{
if( is_prime(i) ) continue;
double pA = 1, pB = 1;
for(int j=0; j < i; j++)
{
pA *= (sA/100.0);
pB *= (sB/100.0);
}
for(int j=i; j < 18; j++)
{
pA *= ((100-sA)/100.0);
pB *= ((100-sB)/100.0);
}
for(int j= 18; j>18-i; j--)
{
pA *= j;
pB *= j;
}
for(int j= 2; j<= i; j++)
{
pA /= j;
pB /= j;
}
sum_A += pA;
sum_B += pB;
}
return 1 - sum_A * sum_B;
}
};
반응형