搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 幸运数字(程序优化)路过的大神请帮帮忙
标题:
幸运数字(程序优化)路过的大神请帮帮忙
只看楼主
zy101
等 级:
新手上路
帖 子:30
专家分:0
注 册:2018-10-27
结帖率:
33.33%
楼主
已结贴
√
问题点数:14 回复次数:4
幸运数字(程序优化)路过的大神请帮帮忙
搜索更多相关主题的帖子:
幸运数
优化
2019-02-03 11:37
zy101
等 级:
新手上路
帖 子:30
专家分:0
注 册:2018-10-27
第
2
楼
得分:0
#include<stdio.h>
int main(){
int i,n,count=0,s,a;
scanf("%d",&n);
for(i=1;i<=1000000000;i++){
s=i;
while(s){
a=s%10;
if(a!=4&&a!=7) break;
if(1<=s&&s<=10) {
count++;}
s=s/10;
}
if(count==n) break;
}
printf("%d\n",i);
return 0;
}
2019-02-03 11:39
zy101
等 级:
新手上路
帖 子:30
专家分:0
注 册:2018-10-27
第
3
楼
得分:0
以上程序超时,求优化
2019-02-03 11:45
rjsp
等 级:
版主
威 望:
507
帖 子:8890
专家分:53117
注 册:2011-1-18
第
4
楼
得分:14
先求得 2^m - 1 <= n 中m的最大值
然后将n + 1 - 2^m 转化为m位的二进制表达,以4替代0,以7替代1
比如n=5,先求得m等于2
然后 5 + 1 - 2^2 = 2,2的2bits二进制是10,输出74
2019-02-03 21:44
zy101
等 级:
新手上路
帖 子:30
专家分:0
注 册:2018-10-27
第
5
楼
得分:0
感谢你的解答,只是我还是不明白为什么用这个算法。比如:为什么要先用2^m - 1 <= n 求m最大值,而后将n + 1 - 2^m 转化为m位的二进制表达,以4替代0,以7替代1。
这个过程是如何推导出来的呢?请指教。谢谢。
2019-02-04 11:21
5
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-492944-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.275467 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved