数学趣题——一共有多少个将士
宋朝时,北方游牧民族屡屡南下侵犯中原,由于宋军抵抗不力,大片中原土地沦陷。为了鼓舞士气,皇帝决定御驾亲征,出征前,皇帝问领军统帅,此次出征共统御多少将士?
统帅答道:由于此前战役伤亡过大,此次兵员不满1万,不管每5人一列,还是每9人一列、每13人一列、
每17人一列都剩下3人。皇帝茫然不知其数,最后问身边的文臣,才知道了答案。
你知道此次出征共有多少士兵吗?
**** Hidden Message ***** 5*9*13*17+3=9948 因为四个数字相互之间都没有公约数,所以结果=5*9*13*17+3=9948 {:10_256:} n n tto s n n n h n rd n f r y ih
ie yh u a d ie u d e a d o t e gt 但是答案确乎可以是 $3$?毕竟只有 $3$ 个人的话按照题面要求的数没有什么问题……
#include <bits/stdc++.h>
using namespace std;
void exgcd(long long a, long long b, long long &x, long long &y) {
// ax + by = gcd(a, b)
if (b == 0) {
x = 1; y = 0; return;
}
exgcd(b, a % b, x, y);
int t = x;
x = y;
y = t - (a / b) * y;
}
int n;
long long b, a, t;
long long unsigned prod = 1, ans;
int main() {
// scanf("%d", &n);
n = 4;
a = 5; a = 9; a = 13; a = 17;
b = b = b = b = 3;
for (int i = 1; i <= n; ++i) {
// scanf("%lld%lld", &a, &b);
prod *= a;
}
for (int i = 1; i <= n; ++i) {
t = prod / a;
long long x, y;
exgcd(t, a, x, y);
x = (x % a + a) % a;
ans += b * t * x;
}
printf("%llu\n", ans % prod);
}
1 zhangjinxuan 发表于 2024-3-23 08:40
但是答案确乎可以是 $3$?毕竟只有 $3$ 个人的话按照题面要求的数没有什么问题……
都剩下3人,至少一排吧。 sfqxx 发表于 2024-3-23 13:55
都剩下3人,至少一排吧。
你就说是不是吧,不管每5人一列,还是每9人一列、每13人一列、每17人一列都剩下3人,并且站了 0 列…… zhangjinxuan 发表于 2024-3-23 14:20
你就说是不是吧,不管每5人一列,还是每9人一列、每13人一列、每17人一列都剩下3人,并且站了 0 列……
那他岂不是自己数就数的出来? 本帖最后由 zhangjinxuan 于 2024-3-23 17:00 编辑
sfqxx 发表于 2024-3-23 15:03
那他岂不是自己数就数的出来?
数学是严谨的,不能和生活问题相提并论(除非有隐含条件)。
你就说这道题目是不是可以直接转换为多个同余方程的解吧。 zhangjinxuan 发表于 2024-3-23 16:59
数学是严谨的,不能和生活问题相提并论(除非有隐含条件)。
你就说这道题目是不是可以直接转换为多 ...
好像是,抱歉不够严谨了{:10_255:} 1 敢和皇帝这样讲话,拖出去斩了 588
页:
[1]