跳至主要內容

题单9

LPrincess大约 2 分钟ACMalgorithm

xujc-oj竞赛组题单#9

提示

如果方便可以用万能头:#include<bits/stdc++.h>, 但竞赛中,用万能头会比普通调用更耗时

对角线的数量

数学上规定多边形的对角线是不相邻的两个顶点之间的线段。求正n边形对角线的数量。

公式:m * (m - 3) / 2

paper-cut

罗少有一张长方形的纸,他每次都会把这张纸剪成面积相同的两半(这两半也都是长方形),然后丢掉其中的一半。

罗少总共这样做了 n 次,最后剩下一张长为 a,宽为 b 的长方形,现在请你猜想一下,刚开始的那张纸的周长最短可能是多少。

做一个简单循环:

if (a >= b){
    b *= 2;
    c = ( b + a )* 2;
  }
  else{
    a *= 2;
    c = (b + a) * 2;
  }

最后一根稻草

Alice和Bob拿了一堆稻草玩游戏,规定由Alice开始依次轮流拾取一些稻草。每个人每次要么可以拿走一根,要么如果稻草数量是偶数根,还可以选择拿走其中的一半(即如果当前稻草是奇数根,则不能选择拿走一半,只能选择拿走一根)。如果有人拿到了最后一根稻草则获胜。

假设最开始稻草有m根,且Alice和Bob足够聪明,每次都可以做出最正确的选择,那么谁能取胜?

if (m == 1||m==3) cout << "Alice" << endl;
else if (m == 2) cout << "Bob" << endl;
else if (m % 2 == 0) cout << "Alice" << endl;
else cout << "Bob" << endl;

异或运算-3

这道题目很简单,你只需要输出 n 个 n 按位异或的结果就可以了。

按位异或的3个特点: 1.) 0 ^ 0 = 0 , 0 ^ 1 = 1, 0异或任何数=任何数。 2.)1 ^ 0 = 1 , 1 ^ 1 = 0 , 1异或任何数=任何数取反。 3.)任何数异或自己 = 把自己置0。

if (n % 2 != 0) cout << n << endl;
else cout << 0 << endl;
上次编辑于:
贡献者: L-mj0