700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 网易互娱实习生招聘游戏研发工程师笔试第二场(神奇的数)

网易互娱实习生招聘游戏研发工程师笔试第二场(神奇的数)

时间:2023-04-10 14:07:02

相关推荐

网易互娱实习生招聘游戏研发工程师笔试第二场(神奇的数)

题意分析:

(1)数论的题目,给出一个long long类型的范围[N,M],求出这个范围中满足三个条件的数的个数:

①这个数至少包含('2', '3', '5')中的任意一个数字;

② 这个数不能出现'18';

③这个数能被7整除。

(2)对于第一、三个条件比较好判断,第二个条件可以通过每次将这个数整除10,然后对100取模,看结果是否等于18,如不等于,则再除以10,依次循环,直到除完或者余数为18

(3)根据第三个条件是7的倍数这一性质,可以遍历找到第一个能被7整除的符合条件的数,以后遍历的步长为7

可能坑点:

(1)本题方法比较暴力,虽然尽量缩短了遍历范围,可能由于数的范围太大,造成超时,暂时还没有想到好的解法,希望大牛们指点、鞭笞一二.

#include <iostream>using namespace std;bool cal(long long num){bool flag=false;if(num%7!=0)return false;while(num>0){int temp1=num%10;int temp2=num%100;if(temp2==18)return false;if(temp1==2||temp1==3||temp1==5)flag=true;num=num/10;}if(!flag)return false;return true;}int main(){int S;long long N,M;cin>>S;while(S--){cin>>N>>M;long long res=0;long long i=N;for(;i<=M;i++){if(cal(i)){res++;break;}}long long j=i;for(;j<=M;j+=7){if(cal(j))res++;}cout<<res<<endl;}return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。