fork download
  1. #pragma GCC optimize ("Ofast")
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. template<class T, class S> inline T pow_L(T a, S b){
  5. T res = 1;
  6. res = 1;
  7. for(;;){
  8. if(b&1){
  9. res *= a;
  10. }
  11. b >>= 1;
  12. if(b==0){
  13. break;
  14. }
  15. a *= a;
  16. }
  17. return res;
  18. }
  19. inline double pow_L(double a, double b){
  20. return pow(a,b);
  21. }
  22. #define main dummy_main
  23. int main(){
  24. return 0;
  25. }
  26. #undef main
  27. vector<string> w;
  28. int len[6];
  29. int d;
  30. int ind[10];
  31. int use[10];
  32. int lead[10];
  33. bool solve(int ok){
  34. int i;
  35. int j;
  36. int k;
  37. int t;
  38. int md;
  39. if(ok==8){
  40. return true;
  41. }
  42. for(i=(0);i<(w.size());i++){
  43. if(len[i] > ok && ind[w[i][len[i]-1-ok]]==-1){
  44. j = w[i][len[i]-1-ok];
  45. for(k=(0);k<(10);k++){
  46. if(use[k]==0){
  47. if(lead[j] && k==0){
  48. continue;
  49. }
  50. ind[j] = k;
  51. use[k] = 1;
  52. if(solve(ok)){
  53. return true;
  54. }
  55. ind[j] = -1;
  56. use[k] = 0;
  57. }
  58. }
  59. return false;
  60. }
  61. }
  62. ok++;
  63. k = 0;
  64. md =pow_L(10,ok);
  65. for(i=(0);i<(w.size());i++){
  66. t = 0;
  67. for(j=(0);j<(len[i]);j++){
  68. t = 10* t + ind[w[i][j]];
  69. }
  70. if(i==w.size()-1){
  71. k -= t;
  72. }
  73. else{
  74. k += t;
  75. }
  76. }
  77. if(k%md){
  78. return false;
  79. }
  80. return solve(ok);
  81. }
  82. class Solution{
  83. public:
  84. bool isSolvable(vector<string>& words, string result){
  85. int i;
  86. int vis[26] = {};
  87. w = words;
  88. w.push_back(result);
  89. for(i=(0);i<(w.size());i++){
  90. len[i] = w[i].size();
  91. }
  92. for(i=(0);i<(w.size());i++){
  93. int j;
  94. for(j=(0);j<(w[i].size());j++){
  95. vis[w[i][j]-'A'] = 1;
  96. }
  97. }
  98. d = 0;
  99. for(i=(0);i<(26);i++){
  100. if(vis[i]==0){
  101. vis[i] = -1;
  102. continue;
  103. }
  104. vis[i] = d++;
  105. }
  106. for(i=(0);i<(w.size());i++){
  107. int j;
  108. for(j=(0);j<(w[i].size());j++){
  109. w[i][j] = vis[w[i][j]-'A'];
  110. }
  111. }
  112. for(i=(0);i<(d);i++){
  113. ind[i] = -1;
  114. }
  115. for(i=(0);i<(10);i++){
  116. use[i] = lead[i] = 0;
  117. }
  118. for(i=(0);i<(w.size());i++){
  119. lead[w[i][0]] = 1;
  120. }
  121. return solve(0);
  122. }
  123. }
  124. ;
  125. // cLay varsion 20200214-1
  126.  
  127. // --- original code ---
  128. // #define main dummy_main
  129. // {}
  130. // #undef main
  131. //
  132. // vector<string> w; int len[6];
  133. // int d, ind[10], use[10], lead[10];
  134. //
  135. // bool solve(int ok){
  136. // int i, j, k, t, md;
  137. //
  138. // if(ok==8) return true;
  139. //
  140. // rep(i,w.size()) if(len[i] > ok && ind[w[i][len[i]-1-ok]]==-1){
  141. // j = w[i][len[i]-1-ok];
  142. // rep(k,10) if(use[k]==0){
  143. // if(lead[j] && k==0) continue;
  144. // ind[j] = k;
  145. // use[k] = 1;
  146. // if(solve(ok)) return true;
  147. // ind[j] = -1;
  148. // use[k] = 0;
  149. // }
  150. // return false;
  151. // }
  152. //
  153. // ok++;
  154. // k = 0;
  155. // md = 10 ** ok;
  156. // rep(i,w.size()){
  157. // t = 0;
  158. // rep(j,len[i]) t = 10 t + ind[w[i][j]];
  159. // if[i==w.size()-1, k -= t, k += t];
  160. // }
  161. // if(k%md) return false;
  162. //
  163. // return solve(ok);
  164. // }
  165. //
  166. // class Solution {
  167. // public:
  168. // bool isSolvable(vector<string>& words, string result) {
  169. // int vis[26] = {};
  170. // w = words;
  171. // w.push_back(result);
  172. // rep(i,w.size()) len[i] = w[i].size();
  173. // rep(i,w.size()) rep(j,w[i].size()) vis[w[i][j]-'A'] = 1;
  174. //
  175. // d = 0;
  176. // rep(i,26){
  177. // if(vis[i]==0) vis[i] = -1, continue;
  178. // vis[i] = d++;
  179. // }
  180. // rep(i,w.size()) rep(j,w[i].size()) w[i][j] = vis[w[i][j]-'A'];
  181. //
  182. // rep(i,d) ind[i] = -1;
  183. // rep(i,10) use[i] = lead[i] = 0;
  184. // rep(i,w.size()) lead[w[i][0]] = 1;
  185. //
  186. // return solve(0);
  187. // }
  188. // };
  189.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
stdout
Standard output is empty