NYOJ-题目(Math)--151------------------------------------Biorhythms
2015-03-27 10:26
387 查看
http://acm.nyist.net/JudgeOnline/problem.php?pid=151
package org.acm.math; /* * 详情参考:http://blog.csdn.net/lyy289065406/article/details/6648551 * 先说下,题意:( n + d ) % 23 = a , ( n + d ) % 28 = b , ( n + d ) % 33 = c , 求 n 。 * 使 (33 * 28 * x ) % 23 == 1 , 得到 x = 8 , 33 * 28 * 8 = 5544 * 使 (33 * 23 * y ) % 28 == 1 , 得到 y = 19 , 33 * 23 * 19 = 14421 * 使 (23 * 28 * z ) % 33 == 1 , 得到 z = 2 , 23 * 28 * 2 = 1288 * 又有23,28, 33互质,因此最小公倍数是23*28*33 = 24252 * 因此有(5544×a+14421×b+1288×c)% lcm(23,28,33) =n+d * 本题所求的是最小整数解,避免n为负,因此最后结果为n= [n+21252]% 21252 * 那么最终求解n的表达式就是:n = ( 5544 * a + 14421 * b + 1288 * c - d + 21251 ) % 21252 + 1 * */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.StreamTokenizer; public class Math_151 { public static void main(String[] args) throws IOException { StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in))); int a, b, c, d; while (true) { st.nextToken(); a = (int) st.nval; st.nextToken(); b = (int) st.nval; st.nextToken(); c = (int) st.nval; st.nextToken(); d = (int) st.nval; if (a == -1 && b == -1 && c == -1 && d == -1) break; System.out.println((5544 * a + 14421 * b + 1288 * c - d + 21251) % 21252 + 1); } } }
相关文章推荐
- nyoj 151 Biorhythms
- nyoj 151 Biorhythms
- NYOJ-题目(Math)--105--------------------------------九的余数
- NYOJ-题目(Math)--139-------------------------我排第几个
- NYOJ题目769乘数密码
- HDU6063---RXD and math(2017多校联赛题目(???))
- NYOJ 题目412 Same binary weight(bitset)
- NYOJ题目893十字架
- NYOJ 题目998 Sum(欧拉函数,水)
- NYOJ--20(搜索)-题目----------------------------- 吝啬的国度
- NYOJ--21(搜索)-题目-----------------------------三个水杯
- NYOJ--27(搜索)-题目-----------------------------水池数目
- NYOJ-127(图论)-题目------------------------------星际之门(一)
- NYOJ 题目187快速查找素数
- NYOJ 题目阶乘因式分解(二)(数学)
- NYOJ---题目477A+B Problem III
- NYOJ 题目26 孪生素数问题
- NYOJ题目915+-字符串(水题,字符串)