蓝桥杯备赛:一道数学题(练思维(同余的应用))

题目:请问由1-8组成的8位数中有多少个数字可以被1111整除?

首先这道题目看着很难,如果我们直接用代码做的话,也要跑很久,那能不呢想想有什么样的思路可以巧妙一点解开这道题目呢?
有的兄弟有的

这道题目的做法是用同余去巧妙的解决的。

首先我们把这个数字拆成两个部分。
然后我们知道10000%1111是余1的,那么A10000%11111==A,那么这个式子就可以写成

那么我们接着往下思考,其实A+B的每个位数加起来应该等于1+2+3+4...+8等于36,那么这个时候我们可以用一个定理,就是一个数字每个位置加起来等于9的倍数那这个数就是9的倍数(这个大家自己证明一下,或者问一下deepseek)。
然后既然它又可以被1111整除又可以被9整除,那么其实A+B就只能等于=9999了(因为1111
92已经高出了所能举出的最大的数字)
(下面举出一种情况)

那么这两边的数字的一边定了另一边也就定了,首先如果是确定的4个数字那么就有4!种可能,然后每个位置的数字其实是有两种可能(两边交换数字),也就是2
222,最后两个相乘得到的就是384种可能。

相关推荐
潘小磊12 小时前
高频面试之5Kafka
面试·职场和发展
Coding小公仔13 小时前
leetcode 768. 最多能完成排序的块 II
算法·leetcode·职场和发展
byte轻骑兵16 小时前
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
面试·职场和发展
looklight19 小时前
7. 整数反转
c++·算法·leetcode·职场和发展
天真小巫19 小时前
2025.6.11总结
职场和发展
a.30219 小时前
蓝桥杯等竞赛场景下 C++ 的时间与空间复杂度深度解析
c++·蓝桥杯
KuaCpp21 小时前
蓝桥杯刷题
蓝桥杯
黑学生1 天前
2024蓝桥杯C/C++ B组国赛
c语言·c++·蓝桥杯