竞赛
考级
这道题很简单,当x >= 4时,其可以写为x! = 4! * k(k∈N*),而4!=4 * 3 * 2 * 1 = 24,那么x!=24k,其一定能被24整除. 所以代码为:
思路:我们要了解阶乘,4的阶乘=24,所以>=4的数必是24的倍数。
思路分析: 只要n大于3,也就是至少=4,就可以整除24 因为4的阶乘是24刚好是24的1倍, 于是便是在24的基础上继续乘,就一定是24的倍数 在解这种题的时候要先分析,虽然硬算也可以 ,但是分析后会更快 我一开始就是
当 n=1: 1! = 1,不能被 24 整除 当 n=2: 2! = 2,不能被 24 整除 当 n=3: 6! = 6,不能被 24 整除 当 n=4: 4! = 24,能被 24 整除 当 n>4: n! 包含 4! 作为因子,所以一定能被 24 整除
做完这道题的时候,你会发现用整除的方法是不行的,因为数字会越来越大,你换了几个比较小的数,发现>3的数运行都是YES,于是你写出了以下代码,然后全部AC了
T2 思路分析 本题是一个简单的思维题,我们能发现 4!4!4! 是第一个242424 的倍数,后面更大的数的阶乘又一定是 4!4!4! 的倍数,因为n!=1×2×3×4……×nn! = 1 \times 2 \times 3 \times 4 …… \times nn!=1×2×3×4……×n。所以当 n≤3n \leq 3n≤3 的时候,输出 "NO",否则输出 "YES"。 代码
SOLUTION 发现 4!=244!=244!=24 是 242424 的倍数,所以当 x≥4x\ge4x≥4 时也一定符合,因此只要判断 [x≥24][x\ge24][x≥24] 即可。 CODE
只要进行质因数分解,2和3的因子分别达到3和1就行了
#include<bits/stdc++.h>//submitRecord// using namespace std; //const int N=1e7+10; int main(){ //freopen("","r",stdin); //freopen("","w",stdout); ios::sync_with_stdio(); cin.tie(nullptr); cout.tie(nullptr); int x; cin >> x; cout <<(x>=4?"YES":"NO"); return 0; //fclose(stdin); //fclose(stdout); return 0; }
提交答案之后,这里将显示提交结果~