fork(1) download
  1. /*
  2. Amirul Islam (shiningflash)
  3. toph :: Palindrome Again
  4. */
  5.  
  6. #include <bits/stdc++.h>
  7. using namespace std;
  8. #define ll long long
  9. #define mx 1000005
  10.  
  11. const string a[] = {"zero", "one", "two", "three", "four", "five",
  12. "six", "seven", "eight", "nine", "ten"};
  13.  
  14. const string b[] = {"zero", "one", "two", "three", "four", "five",
  15. "six", "seven", "eight", "nine", "ten", "eleven",
  16. "twelve", "thirteen", "fourteen", "fifteen",
  17. "sixteen", "seventeen", "eighteen", "nineteen"};
  18.  
  19. const string c[] = {"ANYTHING", "ANYTHING", "twenty", "thirty", "forty",
  20. "fifty", "sixty", "seventy", "eighty", "ninety"};
  21.  
  22. int wordToInt(string s) {
  23. int n = 0;
  24. string word;
  25. vector <string> vec;
  26. stringstream ss(s);
  27. while (ss >> word) vec.push_back(word);
  28.  
  29. for (int i = 0; i < vec.size(); i++) {
  30. if (vec[i] == "thousand") {
  31. for (int j = 0; j <= 10; j++) {
  32. if (vec[i-1] == a[j]) {
  33. n += (j * 1000);
  34. break;
  35. }
  36. }
  37. }
  38. }
  39. for (int i = 0; i < vec.size(); i++) {
  40. if (vec[i] == "hundred") {
  41. for (int j = 0; j <= 10; j++) {
  42. if (vec[i-1] == a[j]) {
  43. n += (j * 100);
  44. break;
  45. }
  46. }
  47. }
  48. }
  49. for (int i = 0; i < vec.size(); i++) {
  50. for (int j = 0; j <= 9; j++) {
  51. if (vec[i] == c[j]) {
  52. n += (j * 10);
  53. break;
  54. }
  55. }
  56. }
  57. for (int i = 0; i <= 19; i++) {
  58. if (vec[vec.size()-1] == b[i]) {
  59. n += i;
  60. break;
  61. }
  62. }
  63. return n;
  64. }
  65.  
  66. void solution(int n) {
  67. int binary[32];
  68. int pos = 0;
  69. while (n > 0) {
  70. binary[pos++] = n % 2;
  71. n /= 2;
  72. }
  73. for (int i = pos-1; i >= 0; i--) cout << binary[i]; cout << endl; // check 3
  74.  
  75. bool f = true;
  76. for (int i = 0, j = pos-1; j > i; i++, j--) {
  77. if (binary[i] != binary[j]) {
  78. f = false;
  79. break;
  80. }
  81. }
  82. cout << (f ? "YES\n" : "NO\n");
  83. }
  84.  
  85. int main() {
  86. //freopen("in", "r", stdin);
  87. //ios_base::sync_with_stdio(0);
  88. //cin.tie(NULL);
  89.  
  90. int t;
  91. string s;
  92. cin >> t;
  93. cin.ignore();
  94. while (t--) {
  95. getline(cin, s);
  96. int n = wordToInt(s);
  97. cout << endl << s << endl; // check 1
  98. cout << n << " "; // check 2
  99. solution(n);
  100. }
  101. return 0;
  102. }
Success #stdin #stdout 0s 4524KB
stdin
8
one
three
two
two hundred fifty five
sixty seven
eight hundred
five thousand sixty six
two thousand nineteen
stdout
one
1 1
YES

three
3 11
YES

two
2 10
NO

two hundred fifty five
255 11111111
YES

sixty seven
67 1000011
NO

eight hundred
800 1100100000
NO

five thousand sixty six
5066 1001111001010
NO

two thousand nineteen
2019 11111100011
NO