首页 > 编程知识 正文

拼题A 2021 跨年挑战赛 75 整除阶乘 15分

时间:2023-05-03 13:50:29 阅读:187989 作者:4995

题目

本题要求你在给定区间 [a,b] 内找出使得 n​2​​ +1 整除 n! 的所有正整数 n。

输入格式:

输入在一行中给出两个正整数 0<a<b≤10​4​​ ,其中 (b−a) ≤ 20。

输出格式:

按照递增顺序,每行输出一个满足题面条件的 n。如果解不存在,则输出 None。

输入样例1:

30 50

输出样例1:

38
43
47

输入样例2:

50 55

输出样例2:

None

思路:

借鉴了知乎大佬 @苍星石 的思路(我是辣鸡):
“不能把阶乘算出来!可以用阶乘的元素把除数同除,消成1;最后判断除数(n​2​​ +1)有没有变成1。”

Code: #include<bits/stdc++.h>using namespace std;int main(){int x,y;cin>>x>>y;int count=0;for(int i=x;i<=y;i++){int res=i*i+1;for(int j=1;j<=i;j++){//感谢评论区指正!之前没有考虑到类似于34整除17的情况if(res>=j&&res%j==0&&res!=1) res/=j;else if(res<j&&j%res==0) res=1;}if(res==1){count++;cout<<i<<endl;}}if(count==0) cout<<"None"<<endl;return 0;} AC

放一张令人开心的图~

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。