【幸运数字】的含解释的题解!
2024-02-09 22:57:57
发布于:广东
43阅读
0回复
0点赞
首先,俺们看看题啊,咱们这判断幸运度怎么做呢,我的方法是一位一位去判断(打擂台)。
int xin(int x){
int big=0,sma=10;
while(x!=0){
if(x%10>big) big=x%10;
if(x%10<sma) sma=x%10;
x/=10;
}
return big-sma;
}
做到这里,好多小朋友说:“欸欸欸,那我会了,下面不就是也打擂台吗!”说完就啪啪啪啪的打键盘。
键盘:我惹你了吗,打我这么用力。
然后就写出这样的代码:
#include <bits/stdc++.h>
using namespace std;
int xin(int x){
int big=0,sma=10;
while(x!=0){
if(x%10>big) big=x%10;
if(x%10<sma) sma=x%10;
x/=10;
}
return big-sma;
}
int main(){
int m,x,y,big=0,ll,lll; //记得初始化哦
cin>>m;
for(int i=0;i<m;i++){
cin>>x>>y;
lll=x; //这里是防止幸运度都是0,导致不稳定(如果设为0的话会WA)
for(int j=x;j<=y;j++){
ll=xin(j); //xin是判断幸运度的
if(ll>big){
big=ll; //big是用于记录最大值的
lll=j; //这里的lll是用于记录那个数字的
}
}
cout<<lll<<endl;
big=0; //big一定要清零!!!
}
return 0;
}
然后啪一下提交,就时间超限了:
这是小朋友们肯定会说:“尘埃尘埃,你这算法有问题啊!”
其实,因为幸运度不可能超过9,所以直接掀桌(╯‵□′)╯︵┻━┻(break)
所以,我们只需要微微地加一行代码,就好了
if(ll==9) break;
最后代码如下:
#include <bits/stdc++.h>
using namespace std;
int xin(int x){
int big=0,sma=10;
while(x!=0){
if(x%10>big) big=x%10;
if(x%10<sma) sma=x%10;
x/=10;
}
return big-sma;
}
int main(){
int m,x,y,big=0,ll,lll; //记得初始化哦
cin>>m;
for(int i=0;i<m;i++){
cin>>x>>y;
lll=x; //这里是防止幸运度都是0,导致不稳定(如果设为0的话会WA)
for(int j=x;j<=y;j++){
ll=xin(j); //xin是判断幸运度的
if(ll>big){
big=ll; //big是用于记录最大值的
lll=j; //这里的lll是用于记录那个数字的
}
if(ll==9) break; //因为幸运度不可能超过9,所以直接掀桌(╯‵□′)╯︵┻━┻
}
cout<<lll<<endl;
big=0; //big一定要清零!!!
}
return 0;
}
懂了就给我一个赞吧,我真的很需要!
全部评论 2
哪里有你,哪里就有我的评论
2025-02-24 来自 江苏
0给我管理员
2024-08-01 来自 广东
0
有帮助,赞一个