稍微注明一下,最后的积是ZXYY
评论
529
评论
佩服楼主,这种不服输的精神,为了孩子,很能坚持。
评论
有巧办法吗?
评论
小孩不懂,我可不得学懂了再喂给他吗
评论
XYZ=100X+10Y+Z
ZXYY=1000Z+100X+11Y
1800X+180Y+18Z=1000Z+100X+11Y
1700X+169Y=982Z
没有其他条件,然后就猜喽
评论
1. Y 是偶數
2. 考慮個位數 Y = 8Z (mod 10)
(Y,Z) 只能是 (8,1),(6,2),(4,3),(2,4),(0,5),(8,6),(6,7),(4,8),(2,9)
3. 考慮被17除餘數, ZXYY - XYZ = 17*(XYZ),得 Y-4Z = 0 (Mod 17)
(Y,Z) 只能是 (4,1), (8,2), (2,9)
4. 結合[2],[3]得 Y,Z =(2,9), X29 * 18 = 9X22, X = 6太大, 4太小,只剩五。
這些題沒意義。
评论
为什么会出现一个要被17整除呢?
评论
一般就是枚举,然后发现矛盾再否定。
评论
這種 mod 幾 mod 幾的方法也是基本套路。
-比如學校教的整除條件都直接用這些推出來
-任何平方數被4除不會餘2,3
-還有很多。
選至於爲什麽選17純粹靈感,剛好看到兩個數XYZ和ZXYY,十位百位都一樣就減了一減
得 999Z + Y = 17 * (XYZ) 就選了mod17看看(能砍掉XYZ)。
评论
其实你已经解题到了一半儿了。
因为 1700 * X 各位是个0 , 所以 169 * Y 的各位 9Y 要匹配 982 * Z 的2 Z 的个位。
于是, 只有下面的4组是符合 这个各位匹配的原则。
9 * 2 = 2 * 9 ( Y= 2, Z = 9)
9 * 4 = 2 * 3 ( Y = 4 , Z = 3 )
9 * 6 = 2 * 2 ( Y = 6, Z = 2 )
9 * 8 = 2 * 1 ( Y = 9, Z = 1 ).
把四组数字带入 169Y + 1700 X = 982 Z. 能解出 X 是整数的,就是答案。 最后只有一组可以。
评论
十位数的Y是偶数,所以80Y+18Z的十位数是偶数,所以18Z的十位数是偶数,可得Z只能是6,7,8或者9
18(10Y + Z) mod 100=10Y+Y=11Y,所以18Z mod100=31Y
把Z=6,7,8,9分别代入仅在Z=9的情况下成立,Y=2,易得X=5
评论
Guess and check 就是小学的巧办法。
评论
Y is even, 18 is not multiply of 4,
if YY=22, Z=4 or 9, and 22 is not multiply of 4, so Z=9。 9X22 is multiply of 9, so X=5, just check XYZ=529 work。
if check all the possible case:
if YY=44, Z=3 or 8, and 44 is multiple of 4, so Z=8。 8X44 is multiply of 9, so X=2, just check XYZ=248 not work。
if YY=66, Z=2 or 7, and 66 is not multiply of 4, so Z=7。7X66 is multiply of 9, so X=8, just check XYZ=867 not work。
if YY=88, Z=1 or 6, and 88 is multiple of 4, so Z=6。6X88 is multiply of 9, so X=5, just check XYZ=586 not work。
评论
我写的rust language 命令行程序打印结果
用免费chatgpt生成框架程序https://chatgpt.com/share/674fbdef-9804-8009-8c53-8e973a55b0fe,再改一下,为时一分钟做好项目,运行结果0.82秒
https://play.rust-lang.org/?vers ... b1093827cb419cb864e
fn main() {
for x in 1..10 {
for y in 1..10 {
for z in 1..10 {
let xyz = 100 * x + 10 * y + z;
let zxyy = 1000 * z + 100 * x + 10 * y + y;
if xyz * 18 == zxyy {
if x != y && x != z && y != z {
println!("x: {}, y: {}, z: {}", x, y, z);
}
}
}
}
}
}
评论
这是稍微优化点的代码
fn main() {
for x in 1..10 {
for y in 1..10 {
for z in 1..10 {
if x != y && x != z && y != z {
let xyz = 100 * x + 10 * y + z;
let zxyy = 1000 * z + 100 * x + 10 * y + y;
if xyz * 18 == zxyy {
println!("x: {}, y: {}, z: {}", x, y, z);
}
}
}
}
}
}
评论
这是functional programming in rust
fn main() {
(1..10)
.flat_map(|x| {
(1..10).flat_map(move |y| {
(1..10).filter_map(move |z| {
if x != y && x != z && y != z {
let xyz = 100 * x + 10 * y + z;
let zxyy = 1000 * z + 100 * x + 10 * y + y;
if xyz * 18 == zxyy {
Some((x, y, z))
} else {
None
}
} else {
None
}
})
})
})
.for_each(|(x, y, z)| {
println!("x: {}, y: {}, z: {}", x, y, z);
});
}
评论
我问了chatgpt, 也是和我一样用了穷举法
https://chatgpt.com/share/674fc68c-8154-8009-8afd-d358a2db527a
评论
(xyz0-xyz)×2 =zxyy
可以推出 y是小于等于4, z是大于等于6
因为(10-z)×2必须不能有十位数,才能保证 yy 是相同的。
那么z 必然不需要借一位
所以 (10-z)×2 =y 以及 (z-1-y) ×2=y 或者 10+y 前者方程得不到整数解,后者推出y=2 和z=9
再同理推出x
评论
不用那么麻烦。如果ZXYY是18的倍数,那么Z+X+Y+Y也是18的倍数。它们都是个位数,所以Z+X+Y+Y必然等于18.
Y是偶数
Z=2x 或者Z=2x-1,所以Z+X大概就是3x。拿Y=2,4,6,8往Z+X+2*Y=18一套,直接就试出来了。
评论
z=2x是怎么来的呢?
评论
還有待加強,1..10就錯了。
评论
Why?
(i.e., integers from 1 to 9)
The outermost flat_map iterates over the numbers from 1 to 9 and assigns each value to x.
https://chatgpt.com/share/67500f65-78a0-8009-a6da-6038e2c04b85
评论
XYZ * 18 = ZXYY, 18略小于20,你看两个数的最高位,所以z等于2x或者2x-1
澳洲中文论坛热点
- 悉尼部份城铁将封闭一年,华人区受影响!只能乘巴士(组图)
- 据《逐日电讯报》报导,从明年年中开始,因为从Bankstown和Sydenham的城铁将因Metro South West革新名目而
- 联邦政客们具有多少房产?
- 据本月早些时分报导,绿党副首领、参议员Mehreen Faruqi已获准在Port Macquarie联系其房产并建造三栋投资联