class DegreesToRadians {
public:
double convertToRadians(int degrees, int minutes, int seconds) {
double a = minutes * 60 + seconds;
double b = 60 * 60;
double c = a / b;
double d = degrees + c;
return d * M_PI / 180.0;
}
};
500class TagalogDictionary {
public:
vector <string> sortWords(vector <string> words) {
map<string, int> lex;
string w[] = {"a", "b", "k", "d", "e", "g", "h", "i", "l", "m", "n", "ng", "o", "p", "r", "s", "t", "u", "w", "y", "@"};
for(int i=0; w[i] != "@"; ++i){
lex[ w[i] ] = i;
}
vector< pair<string, int> > v;
for(int i=0; i<words.size(); ++i){
string s;
for(int j=0; j<words[i].size(); ++j){
if(j && words[i][j-1] == 'n' && words[i][j] == 'g' ){
s.erase( s.begin() + (int)s.size() - 1 );
}
s += words[i][j];
s += ' ';
}
string t, u;
istringstream iss( s );
while( iss >> t )u += 'A' + lex[t];
v.push_back( make_pair(u, i) );
}
sort( v.begin(), v.end() );
vector<string> u;
for(int i=0; i<v.size(); ++i){
u.push_back( words[ v[i].second ] );
}
return u;
}
};
1000似たような問題をやったことがあるから、労せず解けると思ったけど、そんなことはなかった。
下記のソースコードの22行目の式で詰まった。 x % abs(b) でやって出なかった。
string itoa(int n)
{
ostringstream oss;
oss << n;
return oss.str();
}
class ReverseUnnaturalBaseConversion {
public:
string convertToBase(int x, int b) {
if( x == 0 )return "0";
bool flg = false;
if( 0 < b && x < 0 ){
flg = true;
x = abs( x );
}
ostringstream oss;
string s;
while( x ){
int m = (x % abs( b ) + abs(b)) % abs(b);
x = (x - m) / b;
s = itoa(m) + s;
}
if( flg )s = "-" + s;
return s;
}
};
0 件のコメント :
コメントを投稿