51Nod 1413 权势二进制 (思维)
2024-09-05 16:26:07
题意 : 一个十进制整数被叫做权势二进制, 当他的十进制表示的时候只由0或1组成。例如0, 1, 101, 110011都是权势二进制而2, 12, 900不是。当给定一个n (1<=n<=1,000,000)的时候, 计算一下最少要多少个权势二进制相加才能得到n。
分析 : 由于权势二进制可以在任意一位构造出1或者0, 那我就可以让每一位都在同时减1, 直到某一位变成0, 继续减其他位, 直到全部都等于0。例如 23303, 可以先构造11101进行相减, 使得除了零外的每一位都减1, 减两次后会变成 01101, 此时再减一次1101即可, 可以看出减的次数取决于这个数中最大的位数, 比如23303就是3, 8889就是9......而减的次数也就是题目所求的最少相加次数。
瞎搞 : 完全没看出考查思维……然后先是进制转化构造出了1,000,000内所有的权势二进制, 最后发现二分查找+贪心无法解决, 一脸懵逼看了题解才发现居然如此巧妙。=_=
#include<iostream> #include<stdio.h> #include<string.h> #include<ctype.h> #include<algorithm> using namespace std; int main(void) { char ch; ; while( (ch=getchar()) && ch!='\n' ){ ' > Max ){ Max = ch-'; } } printf("%d\n", Max); ; }
最新文章
- 跳转Activity两种方法
- SessionState
- ios-UserDefaults
- 总结的js性能优化方面的小知识
- MySQL 挺有意思
- windows下apache+php+mysql 环境配置方法
- SVN与TortoiseSVN实战:标签与分支
- Groovy获取json和xml数据
- <;Chapter 2>;2-2-2.开发Python应用(Developing a Python App)
- 日入过百优质消除手游数据分享—萌萌哒包子脸爱消除(游戏开发引擎:libgdx)
- SQL 存储过程 通过多个ID更新数据 分类: SQL Server 2014-12-08 16:08 299人阅读 评论(0) 收藏
- okhttp 常用使用方式 封装 演示
- Android Studio Gradle Running报错:Failed to complete Gradle execution.
- 【LeetCode】3Sum 解决报告
- onSaveInstanceState()和onRestoreInstanceState()方法
- JS实现EasyUI ,Datagrid,合并单元格功能
- PAT1059:Prime Factors
- mysql5.5大数据量下表结构升级
- Django:模板template(一)
- topcoder srm 703 div1 -3
热门文章
- flask response 详解
- Linux 根据端口快速停止服务并启动的办法
- 2018icpc宁夏邀请赛_L_Continuous Intervals
- 092、部署Graylog日志系统(2019-05-16 周四)
- 087、日志管理之 Docker logs (2019-05-09)
- java.lang.IllegalArgumentException: id to load is required for loading
- UnknownPropertyException(Yii2)
- 优雅的swiper实例
- python cv2展示网络图片、图片编解码、及与base64转换
- ipcs - 提供基于 ipc (Inter-process communication)结构的信息