반응형
Read Until EOF
while
(getline(cin, data)) {
...
}
Compare Strings
string a, b;
a.compare(b)
Set String To Upper
string word;
transform(word.begin(),word.end(),word.begin(),::
toupper
);
Append String
http://www.cplusplus.com/reference/string/string/append/
string (1) | string& append (const string& str); |
---|---|
substring (2) | string& append (const string& str, size_t subpos, size_t sublen); |
c-string (3) | string& append (const char* s); |
buffer (4) | string& append (const char* s, size_t n); |
fill (5) | string& append (size_t n, char c); |
range (6) | template <class InputIterator> string& append (InputIterator first, InputIterator last); |
initializer list(7) | string& append (initializer_list<char> il); |
Reverse String
string(word.rbegin(),word.rend())
When to use scanf or cin
small amount of input or cumbersome string input -> cin
big amount of input -> scanf
When to use printf or cout
small amount of output -> cout
big amount of output or printing double -> printf
Get Average
auto avg=accumulate(data.begin(),data.end(),0)/n;
Get Stdev
double
avg;
double
app(
double
x){
return
(x-avg)*(x-avg);}
void
proc(){
avg=data.sum()/n;
double
result=
sqrt
(data.apply(app).sum()/n);
printf
(
"%lf\n"
,result);
}
void
proc(){
ld avg=accumulate(data.begin(),data.end(),0.0)/n;
transform(data.begin(),data.end(),data.begin(),[avg](ld x)->ld{
return
(x-avg)*(x-avg);});
ld result=
sqrt
(accumulate(data.begin(),data.end(),0.0)/n);
printf
(
"%Lf\n"
,result);
}
Dice Library
struct
Cube{
/**
* 0
* 3 1 2 4
* 5
* <:y ^:x <>:z
**/
Cube(){}
int
d[6];
void
roll(
int
i,
int
j,
int
k,
int
l){
int
t=d[i];d[i]=d[j];d[j]=d[k];d[k]=d[l];d[l]=t;
}
void
z(){roll(1,2,4,3);}
void
y(){roll(0,2,5,3);}
void
x(){roll(0,1,5,4);}
void
n(){x();}
void
s(){x(),x(),x();}
void
e(){y(),y(),y();}
void
w(){y();}
int
getRight(
int
top,
int
front){
int
right;
for
(
int
i=0;i<6;++i){
for
(
int
j=0;j<4;++j){
if
(d[0]==top&&d[1]==front)right=d[2];
z();
}
if
(i&1)x();
else
y();
}
return
right;
}
bool
isSame(Cube c){
auto chk=[&]{
for
(
int
i=0;i<6;++i)
if
(d[i]!=c.d[i])
return
false
;
return
true
;};
bool
res=
false
;
for
(
int
i=0;i<6;++i){
for
(
int
j=0;j<4;++j){
if
(!res&&chk())res=
true
;
z();
}
if
(i&1)x();
else
y();
}
return
res;
}
};
Greatest Common Divisor
int
gcd(
int
a,
int
b){
do
{
int
c=a%b;
a=b;
b=c;
}
while
(b);
return
a;
}
Includes all of Standard Library Headers
#include <bits/stdc++.h> // g++ only
반응형
'Contest' 카테고리의 다른 글
제24회 한국정보올림피아드 공모부문 고등부 동상 수상작 “뜬 구름” (0) | 2007.11.21 |
---|