题目:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位. Scanner scanner = new Scanner(System.in); int len = scanner.nextInt(); boolean[] arr = new boolean[len]; for (int i = 0; i < arr.length; i++) { arr[i] = true; //初始化全部在圈内 } int index = 0;…
import java.util.ArrayList; import java.util.List; import java.util.Scanner; //有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位. public class Test37 { public static void main(String[] args) { int n = getN(); List<Integer> list = new ArrayL…
首先模拟一遍得到n个同余方程,然后用扩展欧几里得求出最小的可行解即可,时间复杂度$O(n^2)$. #include<cstdio> #define N 30 int n,i,j,k,x,y,a[N],b[N],d[N],ans; namespace Solve{ int flag=1,k=1,m=0,d,x,y; int exgcd(int a,int b,int&x,int&y){ if(!b)return x=1,y=0,a; int d=exgcd(b,a%b,x,y)…
package C; public class Bisai { public static void main(String[] args) { String a="xyz",b="",c=""; for (int i = 0; i < 3; i++) { if(a.substring(i,i+1).equals("x")||a.substring(i,i+1).equals("z")) { cont…
先写我的思路,没有用指针的做法.如果你用的是VC,把第六行去掉. #include<stdio.h> #include<stdlib.h> int main() { setvbuf(stdout,NULL,_IONBF,0); int n,num; //n为总人数,num为剩余人数. int a[255]={0}; //用0标记此位置有人,若此位置的人退出,则该位置的值为1 int i; int flag=0; //flag为报数 printf("How many peo…
import itertools for i in itertools.permutations('xyz'): if i[0] != 'x' and i[2] != 'x' and i[2] != 'z': print('a vs %s, b vs %s, c vs %s' % (i[0], i[1], i[2]))…