[java]
package D0719;
/*
* 题目大意:求三个巅峰在哪一天同时发生
* 思路1:从n=d+1开始循环如果
* (n-p)%23==0&&(n-e)%28==0&&(n-i)%33==0 n-d就是结果
*
* 思路2:用剩余定理和扩展的欧几里德(高效)
*
* */
//方法一
import java.io.*;
public class PKU1006 {
public static void main(String[] args) throws IOException {
StreamTokenizer st = new StreamTokenizer(new BufferedReader(
new InputStreamReader(System.in)));
int p, e, i, d, n;
int j=1;
while (st.nextToken() != StreamTokenizer.TT_EOF) {
p = (int) st.nval;
st.nextToken();
e = (int) st.nval;
st.nextToken();
i = (int) st.nval;
st.nextToken();
d = (int) st.nval;
if (p == -1 && e == -1 && i == -1 && d == -1)
break;
System.out.print("Case "+j+": the next triple peak occurs in ");
for (n = d + 1; n <= 21252+d; n++) {
if ((n - p) % 23 == 0 && (n - e) % 28 == 0 && (n - i) % 33 == 0) {
System.out.println(n - d+" days.");
}
}
j++;
}
}
}
[java]
package D0719;
//方法二
import java.io.*;
public class PKU1006_2 {
static int x, y;
public static void main(String[] args) throws IOException {
StreamTokenizer st = new StreamTokenizer(new BufferedReader(
new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
int p, e, i, d, n;
int j = 1;
// extend_GCD(28 * 33, 23);
// int i1 = 28 * 33 * x;
// extend_GCD(23 * 33, 28);
// int i2 = 23 * 33 * (x + 28);
// extend_GCD(23 * 28, 33);
// int i3 = 23 * 28 * x;
int i1 = 5544, i2 = 14421, i3 = 1288;// 可以从上面注释的代码中求出i1,i2,i3的值
while (st.nextToken() != StreamTokenizer.TT_EOF) {
p = (int) st.nval;
st.nextToken();
e = (int) st.nval;
st.nextToken();
i = (int) st.nval;
st.nextToken();
d = (int) st.nval;
if (p == -1 && e == -1 && i == -1 && d == -1)
break;
n = (p * i1 + e * i2 + i * i3 - d + 21252) % 21252;
if (n == 0)
n = 21252;
out.println("Case " + j + ": the next triple peak occurs in " + n + " days.");
j++;
}
out.flush();
} www.2cto.com
//这个方法用来求i1,i2,i3可以求出来后直接写上,这个方法就可以不要了
// private static int extend_GCD(int a, int b) {
// int t, ret;
// if (b == 0) {
// x = 1;
// y = 0;
// return a;
// }
// ret = extend_GCD(b, a % b);
// t = x;
// x = y;
// y = t - a / b * y;
// return ret;
// }
}
作者:lhfight