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; } };500
class 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 件のコメント :
コメントを投稿