网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月04日漏签0天
达内吧 关注:290,277贴子:508,762
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 15回复贴,共1页
<<返回达内吧
>0< 加载中...

3的方幂和——一道小题

  • 只看楼主
  • 收藏

  • 回复
  • 进击的羊羊8
  • 颇具盛名
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
一楼度娘,有思路分析


  • 进击的羊羊8
  • 颇具盛名
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
在TTS的在线答疑系统上看见一个很有意思的题,题干不长,解法很巧妙。在线答疑上的内容刷新很快,所以只有很少一部分人看见这个小题。为了使更多人看到这个题,我把它发表在论坛中。这位同学在在线答疑系统上的提问如下:


2025-08-04 18:07:27
广告
不感兴趣
开通SVIP免广告
  • 进击的羊羊8
  • 颇具盛名
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
解法一是什么我们不得而知,但是这个解法二的确是很复杂,以至于我直觉上感觉它肯定不是最简单的解法。题目本身这么短,为什么答案要这么复杂?我甚至都没仔细看
这个复杂的“解法二”,就开始构思自己的思路以及编程去实现它,寻找比解法二更简单的解法。思路如下:


  • 进击的羊羊8
  • 颇具盛名
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这样是没办法只用一个程序就解决该问题的所有情况的。每次拓展数列的长度都需要加长程序的长度,但关键是这个数列实际上有无限长。想到这里,不禁感觉这么解决问题太复杂,肯定找错了方向。


  • 进击的羊羊8
  • 颇具盛名
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
比如11对应1+9=10,11代表2个数都有。因此,对于生成新数列,我的新思路是:通过二进制数每位是1还算0来计算加哪个3的方幂。于是,经过修修补补,最终我的可以勉强实现功能但可读性很差的程序写出来了,由于后面还有采用更好的思路的程序,因此不再对这个程序进行修改,各位将就看一下把:


  • 进击的羊羊8
  • 颇具盛名
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入要查询第几位:");
int n1=scan.nextInt();//所要查询的位
int n=String.valueOf(Integer.toBinaryString(n1)).length();//初始数列的长度也是二进制数的长度
String str=String.valueOf(Integer.toBinaryString(n1));//
int[]a=new int[n];//存储初始数列1,3,9,27……的数组
a[0]=1;
for(int i=1;i<a.length;i++){//初始化a
a[i]=a[i-1]*3;
}


  • 进击的羊羊8
  • 颇具盛名
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
写到这里,这道小题就解决了。我的收获是,编程的灵感可以来自很多与这个程序没有直接关系的地方,比如这个题,如果你没学过二进制,就不容易解决,学过二进制就更容易理解这个数列的结构。我以前是电气工程及其自动化专业的,我学过的两个课程《自动控制原理》《数字电子技术》都曾给我编程带来灵感。所以当学二进制时,就不应该说“学这个有用吗?我编程有必要了解这种底层的东西吗?”


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 15回复贴,共1页
<<返回达内吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示