题目:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=34
思路:第一种方法是枚举10~100进行计算判断,第二种方法是孙子定理,最近正好学了一点孙子定理,所以刚好可以用上,而且该题使用孙子定理效率很高。
代码:
#include <bits/stdc++.h> int main() { int a,b,c; scanf("%d %d %d", &a, &b, &c); int x = (a*70 + b*21 + c*15)%105; if (x > 10 && x < 100) printf("%d ", x); else printf("No answer "); return 0; }
下篇文章中再详细谈谈孙子定理,这里给出主要公式:
对于如下同余方程组
$$ left{egin{aligned} x &= a_1 (mod quad m_1) \ x &= a_2 (mod quad m_2) \ & cdot cdot cdot \ x &= a_n (mod quad m_n) end{aligned} ight. $$
当且仅当 mi 两两互质时方程组有解,在模 M 的意义下有唯一解,且有如下公式:
$$ x = egin{pmatrix} sum a_i t_i M_i end{pmatrix} mod M $$
$$ 其中M = prod m_i,M_i = frac{M}{m_i},t_i为M_i的逆元,a_i为余数 $$