A. Magic Mirror

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <time.h>
  6. #include <string>
  7. #include <set>
  8. #include <map>
  9. #include <list>
  10. #include <stack>
  11. #include <queue>
  12. #include <vector>
  13. #include <bitset>
  14. #include <ext/rope>
  15. #include <algorithm>
  16. #include <iostream>
  17. using namespace std;
  18. #define ll long long
  19. #define minv 1e-6
  20. #define inf 1e9
  21. #define pi 3.1415926536
  22. #define nl 2.7182818284
  23. const ll mod=1e9+;//
  24. const int maxn=1e2+;
  25.  
  26. char s[maxn];
  27.  
  28. int main()
  29. {
  30. int t,i;
  31. scanf("%d",&t);
  32. while (t--)
  33. {
  34. scanf("%s",s);
  35. for (i=;i<strlen(s);i++)
  36. if (s[i]>='a' && s[i]<='z')
  37. s[i]-=;
  38. if (strcmp(s,"JESSIE\0")==)
  39. printf("Good guy!\n");
  40. else
  41. printf("Dare you say that again?\n");
  42. }
  43. return ;
  44. }

B. Mathematical Curse

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <time.h>
  6. #include <string>
  7. #include <set>
  8. #include <map>
  9. #include <list>
  10. #include <stack>
  11. #include <queue>
  12. #include <vector>
  13. #include <bitset>
  14. #include <ext/rope>
  15. #include <algorithm>
  16. #include <iostream>
  17. using namespace std;
  18. #define ll long long
  19. #define minv 1e-6
  20. #define inf 1e9
  21. #define pi 3.1415926536
  22. #define nl 2.7182818284
  23. const ll mod=1e9+;//
  24. const int maxn=1e3+;
  25.  
  26. ll a[maxn];
  27. ll f[],l[],r[],LL=3e18,rr=-3e18;
  28. int c[];
  29.  
  30. int main()
  31. {
  32. int t,n,m,i,j;
  33. scanf("%d",&t);
  34. while (t--)
  35. {
  36. scanf("%d%d%lld",&n,&m,&a[]);
  37. for (i=;i<=n;i++)
  38. scanf("%lld",&a[i]);
  39. l[]=r[]=a[];
  40. scanf("%c",&c[]);
  41. for (i=;i<=m;i++)
  42. {
  43. scanf("%c",&c[i]);
  44. l[i]=LL;
  45. r[i]=rr;
  46. }
  47.  
  48. for (j=;j<=n;j++)
  49. {
  50. for (i=m;i>=;i--)
  51. {
  52. switch(c[i])
  53. {
  54. case '+':
  55. if (l[i-]!=LL)
  56. l[i]=min(l[i],l[i-]+a[j]);
  57. if (r[i-]!=rr)
  58. r[i]=max(r[i],r[i-]+a[j]);
  59. break;
  60. case '-':
  61. if (l[i-]!=LL)
  62. l[i]=min(l[i],l[i-]-a[j]);
  63. if (r[i-]!=rr)
  64. r[i]=max(r[i],r[i-]-a[j]);
  65. break;
  66. case '*':
  67. if (l[i-]!=LL)
  68. l[i]=min(l[i],min(l[i-]*a[j],r[i-]*a[j]));
  69. if (r[i-]!=rr)
  70. r[i]=max(r[i],max(l[i-]*a[j],r[i-]*a[j]));
  71. break;
  72. case '/':
  73. if (a[j]!=)
  74. {
  75. if (l[i-]!=LL)
  76. l[i]=min(l[i],min(l[i-]/a[j],r[i-]/a[j]));
  77. if (r[i-]!=rr)
  78. r[i]=max(r[i],max(l[i-]/a[j],r[i-]/a[j]));
  79. }
  80. break;
  81. }
  82. }
  83. }
  84. printf("%lld\n",r[m]);
  85. }
  86. return ;
  87. }
  88. /*
  89. 3
  90. 5 5 1000
  91. 1000 1000 1000 1000 1000
  92. *****
  93.  
  94. 5 5 1000
  95. -1000 -1000 -1000 -1000 -1000
  96. *****
  97. */

E. Jiu Yuan Wants to Eat

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <time.h>
  6. #include <string>
  7. #include <set>
  8. #include <map>
  9. #include <list>
  10. #include <stack>
  11. #include <queue>
  12. #include <vector>
  13. #include <bitset>
  14. #include <ext/rope>
  15. #include <algorithm>
  16. #include <iostream>
  17. using namespace std;
  18. #define ll long long
  19. #define ull unsigned long long
  20. #define minv 1e-6
  21. #define inf 1e9
  22. #define pi 3.1415926536
  23. #define nl 2.7182818284
  24. const int maxn=1e5+;
  25.  
  26. vector<int>e[maxn];
  27. int fa[maxn],num;
  28. int dep[maxn],siz[maxn],son[maxn],top[maxn];
  29. int id[maxn];
  30. bool vis[maxn];
  31. int n;
  32. ull add[maxn<<],mul[maxn<<],sum[maxn<<];
  33.  
  34. void dfs1(int d,int deep)
  35. {
  36. vector<int>::iterator j;
  37. int dd;
  38. vis[d]=;
  39. siz[d]=;
  40. dep[d]=deep;
  41. son[d]=;
  42. for (j=e[d].begin();j!=e[d].end();j++)
  43. {
  44. dd=*j;
  45. if (!vis[dd])
  46. {
  47. fa[dd]=d;
  48. dfs1(dd,deep+);
  49. siz[d]+=siz[dd];
  50. if (siz[dd]>siz[son[d]])
  51. son[d]=dd;
  52. }
  53. }
  54. }
  55.  
  56. void dfs2(int d,int topd)
  57. {
  58. vector<int>::iterator j;
  59. int dd;
  60. id[d]=++num;
  61. top[d]=topd;
  62. if (son[d]!=)
  63. {
  64. dfs2(son[d],topd);
  65. for (j=e[d].begin();j!=e[d].end();j++)
  66. {
  67. dd=*j;
  68. if (fa[d]!=dd && son[d]!=dd)
  69. dfs2(dd,dd);
  70. }
  71. }
  72. }
  73.  
  74. void build(int index,int l,int r)
  75. {
  76. add[index]=;
  77. mul[index]=;
  78. sum[index]=;
  79. if (l!=r)
  80. {
  81. int m=(l+r)>>;
  82. build(index<<,l,m);
  83. build(index<<|,m+,r);
  84. }
  85. }
  86.  
  87. void push_down(int index,int len)
  88. {
  89. ///(xx*a+b)*c+d
  90. add[index<<]=add[index<<]*mul[index]+add[index];
  91. add[index<<|]=add[index<<|]*mul[index]+add[index];
  92.  
  93. mul[index<<]=mul[index<<]*mul[index];
  94. mul[index<<|]=mul[index<<|]*mul[index];
  95.  
  96. sum[index<<]=sum[index<<]*mul[index]+add[index]*((len+)>>); ///
  97. sum[index<<|]=sum[index<<|]*mul[index]+add[index]*(len>>);
  98.  
  99. add[index]=;
  100. mul[index]=;
  101. }
  102.  
  103. void update_add(int index,int l,int r,int x,int y,ull k)
  104. {
  105. if (x<=l && r<=y)
  106. {
  107. sum[index]+=k*(r-l+);
  108. add[index]+=k;
  109. return;
  110. }
  111. if (add[index]!= || mul[index]!=)
  112. push_down(index,r-l+);
  113. int m=(l+r)>>;
  114. if (x<=m)
  115. update_add(index<<,l,m,x,y,k);
  116. if (m<y)
  117. update_add(index<<|,m+,r,x,y,k);
  118. sum[index]=sum[index<<]+sum[index<<|]; ///
  119. }
  120.  
  121. void update_mul(int index,int l,int r,int x,int y,ull k)
  122. {
  123. if (x<=l && r<=y)
  124. {
  125. sum[index]*=k;
  126. add[index]*=k;
  127. mul[index]*=k;
  128. return;
  129. }
  130. if (add[index]!= || mul[index]!=)
  131. push_down(index,r-l+);
  132. int m=(l+r)>>;
  133. if (x<=m)
  134. update_mul(index<<,l,m,x,y,k);
  135. if (m<y)
  136. update_mul(index<<|,m+,r,x,y,k);
  137. sum[index]=sum[index<<]+sum[index<<|];
  138. }
  139.  
  140. ull query(int index,int l,int r,int x,int y)
  141. {
  142. if (x<=l && r<=y)
  143. return sum[index];
  144. if (x>r || y<l)
  145. return ;
  146. if (add[index]!= || mul[index]!=)
  147. push_down(index,r-l+);
  148. int m=(l+r)>>;
  149. return query(index<<,l,m,x,y)+query(index<<|,m+,r,x,y);
  150. }
  151.  
  152. void work1(int x,int y,ull k)
  153. {
  154. while (top[x]!=top[y])
  155. {
  156. if (dep[top[x]]<dep[top[y]])
  157. swap(x,y);
  158. update_mul(,,n,id[top[x]],id[x],k);
  159. x=fa[top[x]];
  160. }
  161. if (dep[x]<dep[y])
  162. swap(x,y);
  163. update_mul(,,n,id[y],id[x],k);
  164. }
  165.  
  166. void work2(int x,int y,ull k)
  167. {
  168. while (top[x]!=top[y])
  169. {
  170. if (dep[top[x]]<dep[top[y]])
  171. swap(x,y);
  172. update_add(,,n,id[top[x]],id[x],k);
  173. x=fa[top[x]];
  174. }
  175. if (dep[x]<dep[y])
  176. swap(x,y);
  177. update_add(,,n,id[y],id[x],k);
  178. }
  179.  
  180. void work3(int x,int y)
  181. {
  182. while (top[x]!=top[y])
  183. {
  184. if (dep[top[x]]<dep[top[y]])
  185. swap(x,y);
  186. update_mul(,,n,id[top[x]],id[x],-);
  187. update_add(,,n,id[top[x]],id[x],-);
  188. x=fa[top[x]];
  189. }
  190. if (dep[x]<dep[y])
  191. swap(x,y);
  192. update_mul(,,n,id[y],id[x],-);
  193. update_add(,,n,id[y],id[x],-);
  194. }
  195.  
  196. ull work4(int x,int y)
  197. {
  198. ull tot=;
  199. while (top[x]!=top[y])
  200. {
  201. if (dep[top[x]]<dep[top[y]])
  202. swap(x,y);
  203. tot+=query(,,n,id[top[x]],id[x]);
  204. x=fa[top[x]];
  205. }
  206. if (dep[x]<dep[y])
  207. swap(x,y);
  208. tot+=query(,,n,id[y],id[x]);
  209. return tot;
  210. }
  211.  
  212. int main()
  213. {
  214. int i,a,u,v,q,mode;
  215. ull x;
  216. while (~scanf("%d",&n))
  217. {
  218. for (i=;i<=n;i++)
  219. e[i].clear();
  220. memset(vis,,sizeof(vis));
  221.  
  222. for (i=;i<=n;i++)
  223. {
  224. scanf("%d",&a);
  225. e[a].push_back(i);
  226. }
  227. dfs1(,);
  228. num=;
  229. dfs2(,);
  230.  
  231. build(,,n);
  232.  
  233. scanf("%d",&q);
  234. while (q--)
  235. {
  236. scanf("%d",&mode);
  237. if (mode==)
  238. {
  239. scanf("%d%d%llu",&u,&v,&x);
  240. work1(u,v,x);
  241. }
  242. else if (mode==)
  243. {
  244. scanf("%d%d%llu",&u,&v,&x);
  245. work2(u,v,x);
  246. }
  247. else if (mode==)
  248. {
  249. scanf("%d%d",&u,&v);
  250. work3(u,v);
  251. }
  252. else
  253. {
  254. scanf("%d%d",&u,&v);
  255. printf("%llu\n",work4(u,v));
  256. }
  257. }
  258. }
  259. return ;
  260. }
  261. /*
  262. 7
  263. 1 1 1 2 2 4
  264. 5
  265. 2 5 6 1
  266. 1 1 6 2
  267. 4 5 6
  268. 3 5 2
  269. 4 2 2
  270. 2
  271. 1
  272. 4
  273. 3 1 2
  274. 4 1 2
  275. 3 1 1
  276. 4 1 1
  277. 7
  278. 1 1 1 2 2 4
  279. 5
  280. 2 5 6 1
  281. 1 1 6 2
  282. 4 5 6
  283. 3 5 2
  284. 4 2 2
  285. 2
  286. 1
  287. 4
  288. 3 1 2
  289. 4 1 2
  290. 3 1 1
  291. 4 1 1
  292.  
  293. 11
  294. 1 1 2 2 2 3 3 8 9 9
  295. 10
  296. 2 4 10 3
  297. 4 1 3
  298. 4 6 11
  299.  
  300. */

F. Modular Production Line

G. Give Candies

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <time.h>
  6. #include <string>
  7. #include <set>
  8. #include <map>
  9. #include <list>
  10. #include <stack>
  11. #include <queue>
  12. #include <vector>
  13. #include <bitset>
  14. #include <ext/rope>
  15. #include <algorithm>
  16. #include <iostream>
  17. using namespace std;
  18. #define ll long long
  19. #define minv 1e-6
  20. #define inf 1e9
  21. #define pi 3.1415926536
  22. #define nl 2.7182818284
  23. const ll mod=1e9+;//
  24. const int maxn=1e5+;
  25.  
  26. char s[maxn];
  27. int a[maxn];
  28.  
  29. int main()
  30. {
  31. int t,len,i;
  32. ll x,y,z;
  33. scanf("%d",&t);
  34. while (t--)
  35. {
  36. scanf("%s",s);
  37. len=strlen(s);
  38. for (i=;i<=len;i++)
  39. a[i]=s[len-i]-;
  40. x=;
  41. for (i=len;i>=;i--)
  42. x=(x*+a[i])%(mod-);
  43. x=(x-+mod-)%(mod-);
  44. y=;
  45. z=;
  46. while (x)
  47. {
  48. if (x & )
  49. z=z*y%mod;
  50. x>>=;
  51. y=y*y%mod;
  52. }
  53. printf("%lld\n",z);
  54. }
  55. return ;
  56. }

H. String and Times

I. Save the Room

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <time.h>
  6. #include <string>
  7. #include <set>
  8. #include <map>
  9. #include <list>
  10. #include <stack>
  11. #include <queue>
  12. #include <vector>
  13. #include <bitset>
  14. #include <ext/rope>
  15. #include <algorithm>
  16. #include <iostream>
  17. using namespace std;
  18. #define ll long long
  19. #define minv 1e-6
  20. #define inf 1e9
  21. #define pi 3.1415926536
  22. #define nl 2.7182818284
  23. const ll mod=1e9+;//
  24. const int maxn=1e2+;
  25.  
  26. int main()
  27. {
  28. int x,y,z;
  29. while (~scanf("%d%d%d",&x,&y,&z))
  30. {
  31. if (x%== && y%== && z%==)
  32. printf("No\n");
  33. else
  34. printf("Yes\n");
  35. }
  36. return ;
  37. }

J. Participate in E-sports

1. 不同方法时间上的比较 二分和另外一种方法 (l=(l+n/l)/2 )

其实还有倍增2^k(是否加)-> 2^(k-1)(是否加)-> 2^(k-2)(是否加)… 用加法代替二分的除法,应该会快一点。。。

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <time.h>
  6. #include <string>
  7. #include <set>
  8. #include <map>
  9. #include <list>
  10. #include <stack>
  11. #include <queue>
  12. #include <vector>
  13. #include <bitset>
  14. #include <ext/rope>
  15. #include <algorithm>
  16. #include <iostream>
  17. using namespace std;
  18. #define ll long long
  19. #define minv 1e-6
  20. #define inf 1e9
  21. #define pi 3.1415926536
  22. #define nl 2.7182818284
  23. const ll mod=1e9+;//
  24. const int maxn=1e5+;
  25.  
  26. int main()
  27. {
  28. ll n=;
  29. ll l,r,m,v;
  30. int x=,y=;
  31. bool vis;
  32.  
  33. r=n;
  34. while ()
  35. {
  36. x++;
  37. if (r*r==n)
  38. {
  39. vis=;
  40. break;
  41. }
  42. l=n/r;
  43. if (l==r)
  44. {
  45. vis=;
  46. break;
  47. }
  48. r=(l+r)>>;
  49. }
  50.  
  51. l=; r=n;
  52. while ()
  53. {
  54. y++;
  55. m=(l+r)>>;
  56. v=m*m;
  57. if (v==n)
  58. {
  59. vis=;
  60. break;
  61. }
  62. if (l==r)
  63. break;
  64. if (v<n)
  65. l=m+;
  66. else
  67. r=m-;
  68. }
  69.  
  70. printf("%d %d",x,y);
  71. return ;
  72. }
  73.  
  74. /*
  75. 100
  76. 10 13
  77.  
  78. 123456789
  79. 17 27
  80. */

2.n*(n+1)/2 的找规律

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <time.h>
  6. #include <string>
  7. #include <set>
  8. #include <map>
  9. #include <list>
  10. #include <stack>
  11. #include <queue>
  12. #include <vector>
  13. #include <bitset>
  14. #include <ext/rope>
  15. #include <algorithm>
  16. #include <iostream>
  17. using namespace std;
  18. #define ll long long
  19. #define minv 1e-10
  20. #define inf 1e9
  21. #define pi 3.1415926536
  22. #define nl 2.7182818284
  23. const ll mod=1e9+;//
  24. const int maxn=1e5+;
  25.  
  26. int main()
  27. {
  28. ll i;
  29. double v;
  30. for (i=;i<=;i++)
  31. {
  32. v=sqrt(i*(i+)/);
  33. if (fabs(v-(ll)v)<minv)
  34. printf("%lld\n",i);
  35. }
  36. return ;
  37. }

前一半:二分

后一半:找规律,打表。记录index每一个长度(二进制)都有哪些值

  1. import java.math.BigInteger;
  2. import java.util.Scanner;
  3.  
  4. public class Main {
  5. public static void main(String[] args) {
  6. boolean vis1,vis2;
  7. Scanner in=new Scanner(System.in);
  8. BigInteger b2=BigInteger.valueOf();
  9. BigInteger b1=BigInteger.valueOf();
  10. BigInteger b0=BigInteger.valueOf();
  11. BigInteger []f=new BigInteger[];
  12. int [][]num=new int[][];
  13. String s100=new String();
  14. BigInteger b100;
  15.  
  16. int i,j,k,len,q,v;
  17. BigInteger n,l,r,m;
  18.  
  19. s100=s100+"";
  20. for (i=;i<=;i++)
  21. s100=s100+"";
  22. b100=new BigInteger(s100);
  23.  
  24. ///100位以内就可以,因为还要平方
  25. f[]=BigInteger.valueOf();
  26. f[]=BigInteger.valueOf();
  27. i=;
  28. while (true)
  29. {
  30. f[i]=f[i-].multiply(BigInteger.valueOf()).subtract(f[i-]);
  31. if (f[i].compareTo(b100)>)
  32. break;
  33. i++;
  34. }
  35.  
  36. for (j=;j<=i-;j++)
  37. {
  38. f[j]=f[j].multiply(f[j]).add(b1);
  39. len=f[j].bitLength();
  40. num[len][]++;
  41. num[len][num[len][]]=j;
  42. }
  43.  
  44. f[i]=BigInteger.valueOf(); //index=1
  45. len=f[i].bitLength();
  46. num[len][]++;
  47. num[len][num[len][]]=i;
  48.  
  49. k=i+;
  50. f[i+]=BigInteger.valueOf();
  51. f[i+]=BigInteger.valueOf();
  52. i+=;
  53.  
  54. while (true)
  55. {
  56. f[i]=f[i-].multiply(BigInteger.valueOf()).subtract(f[i-]);
  57. if (f[i].compareTo(b100)>)
  58. break;
  59. i++;
  60. }
  61.  
  62. for (j=k;j<=i-;j++)
  63. {
  64. f[j]=f[j].multiply(f[j]);
  65. len=f[j].bitLength();
  66. num[len][]++;
  67. num[len][num[len][]]=j;
  68. }
  69.  
  70. q=in.nextInt();
  71. while (q-->)
  72. {
  73. n=in.nextBigInteger();
  74.  
  75. vis1=false;
  76. l=b1; r=n;
  77. while (l.compareTo(r)<=)
  78. {
  79. m=l.add(r).divide(b2);
  80. v=m.multiply(m).compareTo(n);
  81. if (v==)
  82. {
  83. vis1=true;
  84. break;
  85. }
  86. if (v<)
  87. l=m.add(b1);
  88. else
  89. r=m.subtract(b1);
  90. }
  91.  
  92. vis2=false;
  93. len=n.bitLength();
  94.  
  95. for (i=;i<=num[len][];i++)
  96. if (n.equals(f[num[len][i]])==true)
  97. {
  98. vis2=true;
  99. break;
  100. }
  101.  
  102. if (vis1 && vis2)
  103. System.out.println("Arena of Valor");
  104. else if (vis1 && !vis2)
  105. System.out.println("Hearth Stone");
  106. else if (!vis1 && vis2)
  107. System.out.println("Clash Royale");
  108. else
  109. System.out.println("League of Legends");
  110. }
  111. }
  112. }
  113. /*
  114. 272796309905283809401
  115.  
  116. 2391711738256
  117.  
  118. */

P.S:
队友求模小质数。过了~

K. Transport Ship

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <time.h>
  6. #include <string>
  7. #include <set>
  8. #include <map>
  9. #include <list>
  10. #include <stack>
  11. #include <queue>
  12. #include <vector>
  13. #include <bitset>
  14. #include <ext/rope>
  15. #include <algorithm>
  16. #include <iostream>
  17. using namespace std;
  18. #define ll long long
  19. #define minv 1e-6
  20. #define inf 1e9
  21. #define pi 3.1415926536
  22. #define nl 2.7182818284
  23. const ll mod=1e9+;//
  24. const int maxn=1e4+;
  25.  
  26. ll er[],value=1e4;
  27. ll f[maxn];
  28.  
  29. int main()
  30. {
  31. int t,n,q,i,j,v,c;
  32. scanf("%d",&t);
  33. er[]=;
  34. for (i=;i<=;i++)
  35. er[i]=er[i-]<<;
  36. while (t--)
  37. {
  38. f[]=;
  39. for (i=;i<=value;i++)
  40. f[i]=;
  41. scanf("%d%d",&n,&q);
  42. while (n--)
  43. {
  44. scanf("%d%d",&v,&c);
  45. for (i=;i<c;i++)
  46. for (j=value;j>=er[i]*v;j--)
  47. f[j]=(f[j]+f[j-er[i]*v])%mod;
  48. }
  49. while (q--)
  50. {
  51. scanf("%d",&i);
  52. printf("%lld\n",f[i]);
  53. }
  54. }
  55. return ;
  56. }

L. Poor God Water

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <time.h>
  6. #include <string>
  7. #include <set>
  8. #include <map>
  9. #include <list>
  10. #include <stack>
  11. #include <queue>
  12. #include <vector>
  13. #include <bitset>
  14. #include <ext/rope>
  15. #include <algorithm>
  16. #include <iostream>
  17. using namespace std;
  18. #define ll long long
  19. #define minv 1e-6
  20. #define inf 1e9
  21. #define pi 3.1415926536
  22. #define nl 2.7182818284
  23. const ll mod=1e9+;//
  24. const int maxn=1e2+;
  25.  
  26. ll a[][],b[][],c[][];
  27.  
  28. void init()
  29. {
  30.  
  31. int i,j;
  32. for (i=;i<;i++)
  33. for (j=;j<;j++)
  34. a[i][j]=;
  35.  
  36. a[][]=;
  37. a[][]=;
  38. a[][]=;
  39. a[][]=;
  40. a[][]=;
  41. a[][]=;
  42. a[][]=;
  43. a[][]=;
  44. a[][]=;
  45. a[][]=;
  46. a[][]=;
  47. a[][]=;
  48. a[][]=;
  49. a[][]=;
  50. a[][]=;
  51. a[][]=;
  52. a[][]=;
  53. a[][]=;
  54. a[][]=;
  55. a[][]=;
  56.  
  57. for (i=;i<;i++)
  58. for (j=;j<;j++)
  59. b[i][j]=;
  60. for (i=;i<;i++)
  61. b[i][i]=;
  62. for (i=;i<;i++)
  63. for (j=;j<;j++)
  64. c[i][j]=;
  65. }
  66.  
  67. int main()
  68. {
  69. ///%mod
  70. ///<3
  71. ll n,r;
  72. int t,i,j,k;
  73.  
  74. // init();
  75. // for (i=0;i<9;i++)
  76. // for (j=0;j<9;j++)
  77. // for (k=0;k<9;k++)
  78. // c[i][j]=(c[i][j]+a[i][k]*a[k][j])%mod;
  79. // r=0;
  80. // for (i=0;i<9;i++)
  81. // for (j=0;j<9;j++)
  82. // r=(r+c[i][j])%mod;
  83. //
  84. // printf("%d\n",r);
  85. // return 0;
  86.  
  87. ///b:danwei result
  88. ///a:***
  89.  
  90. scanf("%d",&t);
  91. while (t--)
  92. {
  93. init();
  94. scanf("%lld",&n);
  95. if (n==)
  96. printf("3\n");
  97. else
  98. {
  99. n-=;
  100.  
  101. while (n)
  102. {
  103. if (n & )
  104. {
  105. for (i=;i<;i++)
  106. for (j=;j<;j++)
  107. {
  108. c[i][j]=b[i][j];
  109. b[i][j]=;
  110. }
  111. for (i=;i<;i++)
  112. for (j=;j<;j++)
  113. for (k=;k<;k++)
  114. b[i][j]=(b[i][j]+a[i][k]*c[k][j])%mod;
  115. }
  116.  
  117. for (i=;i<;i++)
  118. for (j=;j<;j++)
  119. {
  120. c[i][j]=a[i][j];
  121. a[i][j]=;
  122. }
  123. for (i=;i<;i++)
  124. for (j=;j<;j++)
  125. for (k=;k<;k++)
  126. a[i][j]=(a[i][j]+c[i][k]*c[k][j])%mod;
  127. n>>=;
  128. }
  129.  
  130. r=;
  131. for (i=;i<;i++)
  132. for (j=;j<;j++)
  133. r=(r+b[i][j])%mod;
  134. printf("%lld\n",r);
  135. }
  136. }
  137. return ;
  138. }
  139. /*
  140. 3
  141. 9
  142. 20
  143. 46
  144. 106
  145. 244
  146. 560
  147. 1286
  148. 2956
  149. 6794
  150. 15610
  151. 35866
  152. 82416
  153. 189384
  154. 435170
  155. */

2018 ACM 网络选拔赛 焦作赛区的更多相关文章

  1. 2018 ACM 网络选拔赛 青岛赛区

    一些题目的代码被网站吞了…… Problem B. Red Black Tree http://acm.zju.edu.cn/onlinejudge/searchProblem.do?contestI ...

  2. 2018 ACM 网络选拔赛 北京赛区

    A Saving Tang Monk II #include <bits/stdc++.h> using namespace std; ; struct node { int x,y,z, ...

  3. 2018 ACM 网络选拔赛 徐州赛区

    A. Hard to prepare #include <cstdio> #include <cstdlib> #include <cmath> #include ...

  4. 2018 ACM 网络选拔赛 沈阳赛区

    B. Call of Accepted #include <cstdio> #include <cstdlib> #include <cmath> #include ...

  5. 2018 ACM 网络选拔赛 南京赛区

    A. An Olympian Math Problem #include <cstdio> #include <cstdlib> #include <cmath> ...

  6. ACM-ICPC 2018 焦作赛区网络预赛- G:Give Candies(费马小定理,快速幂)

    There are N children in kindergarten. Miss Li bought them NNN candies. To make the process more inte ...

  7. ACM-ICPC 2018 焦作赛区网络预赛- L:Poor God Water(BM模板/矩阵快速幂)

    God Water likes to eat meat, fish and chocolate very much, but unfortunately, the doctor tells him t ...

  8. ACM-ICPC 2018 焦作赛区网络预赛

    这场打得还是比较爽的,但是队友差一点就再过一题,还是难受啊. 每天都有新的难过 A. Magic Mirror Jessie has a magic mirror. Every morning she ...

  9. ACM-ICPC 2018 焦作赛区网络预赛J题 Participate in E-sports

    Jessie and Justin want to participate in e-sports. E-sports contain many games, but they don't know ...

随机推荐

  1. Python自动化运维工具-Fabric部署及使用总结

    使用shell命令进行复杂的运维时,代码往往变得复杂难懂,而使用python脚本语言来编写运维程序,就相当于开发普通的应用一样,所以维护和扩展都比较简单,更重要的是python运维工具fabric能自 ...

  2. restfull环境搭建-helloword(三)

    原文地址:http://only81.iteye.com/blog/1689537 This section creates a CRUD (Create, Read, Update, Delete) ...

  3. js 时间戳转换为日期格式

     //将1525854409000类型的时间转换成“yyyy-MM-dd”或“yyyy-MM-dd hh:mm:ss”   //info.birthday是后台获取到的Date类型的出生日期数据, / ...

  4. 2017-2018-2 1723《程序设计与数据结构》第十一周作业 & 实验三 & (总体)第三周结对编程 总结

    作业地址 第十一次作业:https://edu.cnblogs.com/campus/besti/CS-IMIS-1723/homework/1933 (作业界面已评分,可随时查看,如果对自己的评分有 ...

  5. VIM编辑器常用命令(转)

    转自:https://www.cnblogs.com/Nice-Boy/p/6124177.html

  6. git学习心得

    https://github.com/zhangxinn/test/tree/master 自己虽然在课堂上有认真的听老师讲解如何使用github,包括怎样在线学习,怎样在github上建立自己的仓库 ...

  7. Atcoder D - Knapsack 1 (背包)

    D - Knapsack 1 Time Limit: 2 sec / Memory Limit: 1024 MB Score : 100100 points Problem Statement The ...

  8. JHipster - Generate your Spring Boot + Angular/React applications!

    JHipster - Generate your Spring Boot + Angular/React applications!https://www.jhipster.tech/

  9. TCP的TIME_WAIT

    http://www.cnblogs.com/dadonggg/p/8778318.html http://www.firefoxbug.com/index.php/archives/2795/ ht ...

  10. How to leave the open file in eclipse tab after search?

    https://superuser.com/questions/130353/how-to-leave-the-open-file-in-eclipse-tab-after-search From m ...