fork download
  1. #pragma GCC optimize ("Ofast")
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. #define MD (1000000007U)
  5. struct Modint{
  6. unsigned val;
  7. Modint(){
  8. val=0;
  9. }
  10. Modint(int a){
  11. val = ord(a);
  12. }
  13. Modint(unsigned a){
  14. val = ord(a);
  15. }
  16. Modint(long long a){
  17. val = ord(a);
  18. }
  19. Modint(unsigned long long a){
  20. val = ord(a);
  21. }
  22. inline unsigned ord(unsigned a){
  23. return a%MD;
  24. }
  25. inline unsigned ord(int a){
  26. a %= MD;
  27. if(a < 0){
  28. a += MD;
  29. }
  30. return a;
  31. }
  32. inline unsigned ord(unsigned long long a){
  33. return a%MD;
  34. }
  35. inline unsigned ord(long long a){
  36. a %= MD;
  37. if(a < 0){
  38. a += MD;
  39. }
  40. return a;
  41. }
  42. inline unsigned get(){
  43. return val;
  44. }
  45. inline Modint &operator+=(Modint a){
  46. val += a.val;
  47. if(val >= MD){
  48. val -= MD;
  49. }
  50. return *this;
  51. }
  52. inline Modint &operator-=(Modint a){
  53. if(val < a.val){
  54. val = val + MD - a.val;
  55. }
  56. else{
  57. val -= a.val;
  58. }
  59. return *this;
  60. }
  61. inline Modint &operator*=(Modint a){
  62. val = ((unsigned long long)val*a.val)%MD;
  63. return *this;
  64. }
  65. inline Modint &operator/=(Modint a){
  66. return *this *= a.inverse();
  67. }
  68. inline Modint operator+(Modint a){
  69. return Modint(*this)+=a;
  70. }
  71. inline Modint operator-(Modint a){
  72. return Modint(*this)-=a;
  73. }
  74. inline Modint operator*(Modint a){
  75. return Modint(*this)*=a;
  76. }
  77. inline Modint operator/(Modint a){
  78. return Modint(*this)/=a;
  79. }
  80. inline Modint operator+(int a){
  81. return Modint(*this)+=Modint(a);
  82. }
  83. inline Modint operator-(int a){
  84. return Modint(*this)-=Modint(a);
  85. }
  86. inline Modint operator*(int a){
  87. return Modint(*this)*=Modint(a);
  88. }
  89. inline Modint operator/(int a){
  90. return Modint(*this)/=Modint(a);
  91. }
  92. inline Modint operator+(long long a){
  93. return Modint(*this)+=Modint(a);
  94. }
  95. inline Modint operator-(long long a){
  96. return Modint(*this)-=Modint(a);
  97. }
  98. inline Modint operator*(long long a){
  99. return Modint(*this)*=Modint(a);
  100. }
  101. inline Modint operator/(long long a){
  102. return Modint(*this)/=Modint(a);
  103. }
  104. inline Modint operator-(void){
  105. Modint res;
  106. if(val){
  107. res.val=MD-val;
  108. }
  109. else{
  110. res.val=0;
  111. }
  112. return res;
  113. }
  114. inline operator bool(void){
  115. return val!=0;
  116. }
  117. inline operator int(void){
  118. return get();
  119. }
  120. inline operator long long(void){
  121. return get();
  122. }
  123. inline Modint inverse(){
  124. int a = val;
  125. int b = MD;
  126. int u = 1;
  127. int v = 0;
  128. int t;
  129. Modint res;
  130. while(b){
  131. t = a / b;
  132. a -= t * b;
  133. swap(a, b);
  134. u -= t * v;
  135. swap(u, v);
  136. }
  137. if(u < 0){
  138. u += MD;
  139. }
  140. res.val = u;
  141. return res;
  142. }
  143. inline Modint pw(unsigned long long b){
  144. Modint a(*this);
  145. Modint res;
  146. res.val = 1;
  147. while(b){
  148. if(b&1){
  149. res *= a;
  150. }
  151. b >>= 1;
  152. a *= a;
  153. }
  154. return res;
  155. }
  156. inline bool operator==(int a){
  157. return ord(a)==val;
  158. }
  159. inline bool operator!=(int a){
  160. return ord(a)!=val;
  161. }
  162. }
  163. ;
  164. inline Modint operator+(int a, Modint b){
  165. return Modint(a)+=b;
  166. }
  167. inline Modint operator-(int a, Modint b){
  168. return Modint(a)-=b;
  169. }
  170. inline Modint operator*(int a, Modint b){
  171. return Modint(a)*=b;
  172. }
  173. inline Modint operator/(int a, Modint b){
  174. return Modint(a)/=b;
  175. }
  176. inline Modint operator+(long long a, Modint b){
  177. return Modint(a)+=b;
  178. }
  179. inline Modint operator-(long long a, Modint b){
  180. return Modint(a)-=b;
  181. }
  182. inline Modint operator*(long long a, Modint b){
  183. return Modint(a)*=b;
  184. }
  185. inline Modint operator/(long long a, Modint b){
  186. return Modint(a)/=b;
  187. }
  188. #define main dummy_main
  189. int main(){
  190. return 0;
  191. }
  192. #undef main
  193. class Solution{
  194. public:
  195. int dieSimulator(int n, vector<int>& A){
  196. int i, k;
  197. Modint dp[6][5001];
  198. Modint res = 0;
  199. for(i=(0);i<(6);i++){
  200. int j;
  201. for(j=(1);j<(A[i]+1);j++){
  202. dp[i][j] += 1;
  203. }
  204. }
  205. for(k=(0);k<(n);k++){
  206. for(i=(0);i<(6);i++){
  207. int x;
  208. for(x=(0);x<(6);x++){
  209. if(i!=x){
  210. int j;
  211. for(j=(1);j<(A[x]+1);j++){
  212. if(k+j <= n){
  213. dp[x][k+j] += dp[i][k];
  214. }
  215. }
  216. }
  217. }
  218. }
  219. }
  220. for(i=(0);i<(6);i++){
  221. res += dp[i][n];
  222. }
  223. return res;
  224. }
  225. }
  226. ;
  227. // cLay varsion 20191102-1
  228.  
  229. // --- original code ---
  230. // #define main dummy_main
  231. // {}
  232. // #undef main
  233. //
  234. // class Solution {
  235. // public:
  236. // int dieSimulator(int n, vector<int>& A) {
  237. // Modint dp[6][5001], res = 0;
  238. // rep(i,6) rep(j,1,A[i]+1) dp[i][j] += 1;
  239. // rep(k,n) rep(i,6) rep(x,6) if(i!=x) rep(j,1,A[x]+1) if(k+j <= n) dp[x][k+j] += dp[i][k];
  240. // rep(i,6) res += dp[i][n];
  241. // return res;
  242. // }
  243. // };
  244.  
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