有一个问题,很简单,我想。解决方案马上就来了:我们寻找天数的最大值(d-th),并输出它是星期几。因为要让他们相遇,所有的日子都必须是最长的一天的除数。(我们得到一个天数组,并按降序排序,所有元素都是第一个元素的除数)测试 4 失败。我找不到错误。
格林德沃想要召集他的支持者。但是,不幸的是,他不能每天都这样做。格林德沃总共有 n 个支持者。让我们将它们从 1 编号到 n。第 i 号支持者基于个人信念,每隔 di 天(即如果第 i 号支持者两次访问之间的间隔为 di 天)访问会面地点。格林德沃记得,上一次他的所有支持者同时出现在集会地点是在星期几,编号为 s。帮助他确定一周中的哪一天,所有支持者将再次同时出现在集合地点。回想一下,一周有 7 天,格林德沃按照 1 到 7 的顺序对它们进行编号
下列的。 输入格式 输入 的第一行包含两个整数 n 和 s (1 ⩽ n ⩽ 105 , 1 ⩽ s ⩽ 7)。第二行包含 n 个整数 di (1 ⩽ di ⩽ 20)。输出数据格式 输出1到7的单个数字——星期几
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;
import static java.lang.Integer.parseInt;
/**
* Created by Andrey on 31.12.2018.
*/
public class Main {
static int scanInt() throws IOException {
return parseInt(scanString());
}
static String scanString() throws IOException {
while (tok == null || !tok.hasMoreTokens()) {
tok = new StringTokenizer(in.readLine());
}
return tok.nextToken();
}
static BufferedReader in;
static StringTokenizer tok;
public static void main(String[] args) throws IOException {
in = new BufferedReader(new InputStreamReader(System.in));
int n = scanInt();
int s = scanInt();
ArrayList<Integer> days = new ArrayList<>();
for(int i = 0; i < n; ++i){
days.add(scanInt());
}
days.sort(Collections.reverseOrder());
ArrayList<Integer> week = new ArrayList<>();
for(int i = 0; i < 1000; ++i){
week.add(1);
week.add(2);
week.add(3);
week.add(4);
week.add(5);
week.add(6);
week.add(7);
}
System.out.println(week.get(s+days.get(0) - 1));
}
}
我会做一些不同的事情。我会从每个人那里找到 NOC
Di,从而找到会议的频率。接下来,我将此值添加到我们上次会议的日期以找到下一个会议日期,并将其取模
7。如果答案为零,则输出七,因为
7/14/21/... % 7 == 0值得考虑。因此,示意性的解决方案可能如下所示:
如果是这样?