这种问题,一般模拟法的话超时概率比较大。因为循环太多了。其实这个问题有规律的,用你自己的程序打出来看一下就明白了,给你几幅图你就了解了。
可以发现,当n增大1时,编号增大2,,然后还有号码重置的临界点:
可以发现,当n=剩下的编号时,下一个数编号会从2重新开始,而重置时的编号,一个是64,一个是128。
玩计算机的话,应该对64和128很敏感才是,64是2的6次方,128是2的7次方。
也就是说,当2^k<n<=2^(k+1)时,答案就是(n-2^k)*2。
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。