谁知道咋玩七星彩出号绝密算法法奇偶?

百度知道 - 信息提示
知道宝贝找不到问题了&_&!!
该问题可能已经失效。
秒以后自动返回11选5绝密算法-非常爱漫(veryim.com)_头条
11选5绝密算法
日 15:13 来源:
据桑兰在博客中描述,昨天清早,家中的小保姆小杜突称父亲病重,并当场提着行李拂袖而去,桑兰“忍啊忍”,终于“忍不住”了,当晚在博客上发文《什么叫家政服务》,附多张写实照,历数家中脏乱和对高薪保姆的不满。到今天截稿时止,博文引来了网友超过51万次的点击。
“你看,我手里有工牌,有作为发料人在出库单上签的字,还有打卡记录,为啥不能证明我是公司的员工?”昨天,小涂用手机偷偷录下经理跟自己的对话之后,还是不能相信自己就这样被辞退了。
?据称,本次抓赌打黑行动是中国公安司法部门向赌球挥起的一记致命重拳,其调查范围之广、涉案人员之多是中国足坛史无前例的。可以肯定的是,随着案件侦办的逐步深入,还会有更多足坛人士牵扯其中。
张淑华:一是展品选择体现河北开放、大气、绿色。围绕丽水世博会主题,特别强调了与渤海的关联度、我省深厚的海洋文化、绿色海洋发展前景以及河北人民“人海相依”的情怀。二是文化展演打造精品。演出既注重沿海传统文化的继承,又注重突出河北文化的特点,以及表现现代河北的精神风貌。在节目编排上,强调大气、民俗、现代和一气呵成;在舞美和曲目选择上,追求唯美、动人和观赏性。三是整体创意新颖独特,让观众记住河北,记住海洋河北。为放大世博效应,充分利用这次难得的机遇宣传推介河北,还将举办经贸洽谈及旅游推介等活动。
韩晋萍:这里有一个统计数字,就是从十八大以来到今年6月,全国纪检监察机关在办案当中,除了将涉嫌犯罪所得的款物移交司法机关由司法机关依法处理之外,还收缴了201亿元的违纪所得,上缴国库。
资料介绍,日本于1973年发起成立“全缅甸战友团体联络协议会”,推动日本政府厚生省于1974年制定了“海外战殁者遗骨收集计划”,1975年首次向缅甸派出“收骨团”,1976年再次派出,两次共搜集遗骨具。至今,日本依然没有放弃缅印战场阵亡将士遗骸寻找。
日下午6时许,两名持枪男子闯入位于衡阳祁东县城正东路的周大生珠宝店内,劫走黄金项链、戒指等贵重首饰。案发后,衡阳警方调取监控发现,整个作案过程仅有短短21秒。经清点,该店被劫黄金首饰2000多克,价值达80余万元。
作为前驻新西兰大使,陈明明介绍说,中国人去旅游,新西兰是个很好的选择,新西兰的旅游自然风光很美,毛利文化很有特色。另外,在教育领域,新西兰教育素质很不错,也是留学生的首选地之一,大家有兴趣可以送孩子去新西兰留学。在文化领域,有很多世界闻名的大片在新西兰拍摄,比如《指环王》、《霍比特人》,中国有很多大片后期制作也是在那里制作的,很多地方可以去新西兰交流。新西兰对中国也有很大的热情,通过汉语、武术,饮食文化了解中国,都有很多潜力可挖。
中新网4月9日电据俄媒9日报道,俄外交部消息称,俄外长拉夫罗夫在同美国国务卿蒂勒森举行电话会谈时强调,美国对叙利亚空军基地的打击只会有利于极端分子。
适当缩减收入分配差距已无可回避,理论和实践均表明了政府在解决收入分配问题中的不可推卸的责任的重要性。尽管个人所得税不是唯一的手段,但它却是不可或缺的手段。
公诉机关认为,被告人杨彬在担任凉山州人民政府办公室行政科科长及副主任等职位期间,利用职务便利,非法占有公共财物,并索取他人财物,非法收受他人财物,为他人谋取利益,其行为触犯了《中华人民共和国刑法》第三百八十二条、第三百八十五条的规定,犯罪事实清楚,证据确实、充分,应当以贪污罪、受贿罪恶追究其刑事责任。同时,依照《中华人民共和国刑法》第三百八十六条、第六十九条的规定,应当从重处罚、数罪并罚。根据《中华人民共和国刑事诉讼法》第一百七十二条的规定,提起公诉,依法判处。
祁锦坤不甘心,日起进入岳阳监狱服刑后,向湘潭中院、湖南高院提出申诉,其理由与法庭上的辩护理由始终一致:公司贷款系单位行为,他不能成为贷款诈骗罪主体;他无非法占有故意;抵押财产真实,没有重复抵押;公司有担保人,具备偿还能力。
?另外一种方式,就是非职业的盗墓贼。他们的技术往往不很高明,可是很容易得手。比如,有的人承包墓葬周围的土地,种果树,建厂房。历经好多年,才把墓葬里的东西挖走,很稳妥。
新京报快讯(记者刘洋)新京报记者今日获悉,贾跃亭被北京市第三中级人民法院列为失信被执行人。失信被执行人俗称“老赖”,其在申请银行贷款、乘坐飞机软卧、高消费等方面都将受到限制。
除此之外,最重要是坚韧,如果被创业弄得身体虚弱,经不住风雨,受不了批评,承受不了失败,那最后一定会失败。
人间冷暖以这种令人无比心痛的方式呈现在我们面前。对此,我们愤怒、批判,这说明,社会的良知还在。但在批判之后,更重要的是,假如遇到类似事件,我们会不会把对冷漠的这种愤怒化成救人的行动呢?不知道。那十八名路人,假如愿意接受采访,我想他们会有诸多的理由和借口,也肯定会在自责,可这种自责能重新唤起良知吗?也不知道。
而由于朴槿惠下台,选举要提前举行,原本是以改革“财阀”和年轻人就业为主的大选议题,近来因为萨德部署、朝鲜等因素,已经发生了变化。
这段恩怨还要从25年前说起。当时,湘潭县分水乡白沙村莫家组发生了一件大事,村民陈某的妻子突然服毒自杀。妻子死后,陈某将15个月大的女儿赵婷(化名),送给了青山桥镇青山村村民赵某抚养。虽然两镇相邻,但陈某一直独居,并没有探望过女儿。
如今,乐视网半年亏损6亿元,暴风集团也滑向亏损边缘。半年报显示,今年1-6月,暴风集团实现营收亿元,增长%,但净利润万元,下滑%。
马培华,男,汉族,1949年8月生,江苏溧阳人,民建成员,日本京都工芸纤维大学研究生院无机化学专业毕业,在职研究生学历,理学博士学位,研究员。
有利网CEO吴逸然告诉记者,问题平台大概有以下几种类型,一是纯诈骗目的,这类平台在达到目的时肯定会跑路;二是在行业发展初期,认为行业门槛低盲目闯进来的,这类企业由于忽视了金融的专业性要求及运营能力较差、不规范运营等等,导致平台资金压力越来越大,最后可能被迫跑路或清盘、停业整顿。
?巴勒斯坦官方称,科学报告显示,阿拉法特并非死于年老或疾。?膊⒎恰白匀凰劳觥。官方表示,他们的调查将持续到阿拉法特2004年在巴黎的医院去世时。
真凶总有一天会落网的,到时看他们怎么办,汽车是劳力工具,一个月能挣三、四万,所以要把我帐本留好,只不过是时间问题,(真相大白)迟早会有这一天的。二哥,收到信要写回信。
这项法案尚需美国参议院通过,但预计在哥本哈根会议之前通过的可能性不大。美国国会一些议员还要求把一些发展中大国减排作为参议院通过这项法案的前提条件。
与女子同一栋楼的住户介绍,女子今年30多岁,与丈夫和女儿住在15楼。事发时,女子外出买菜,只有丈夫和年仅2岁多的女儿在家。女子回家后,发现大门紧锁,丈夫已不在屋内,并听到孩子在房间哭闹。女子想起卫生间窗户没关闭,担心出意外,急忙来到邻居家中,试图通过一个空调外机进入自家卫生间,不料突然坠至裙楼的4楼平台。女子身上还绑着绳子,但已经断了,可能承受不了女子的体重。
报道称,印度官方对此一事件的态度则较为克制。总理莫迪在随后表示,没能加入核供应国集团只是这个申请过程中的一次挫折,而不是失败。印度将在今年12月核供应国集团的下次例会上再次提交申请,并有信心最终成为该组织中的一员。莫迪还表示,首尔会议的结果不会影响印度与中国的贸易关系,印度仍然欢迎中国公司来印度投资,并将继续致力于加深中印两国的经贸关系。
万事达卡中国区总裁常青认为,非现金支付让支付更为便捷,有促进消费的作用。“中国农村的特产可以卖到中东,中国网民只需待在家中就可以购买全球最好的商品,非现金支付使这一切成为可能。”同时,现金是有成本的。万事达卡2013年《超越现金之旅》报告显示,每年现金消耗了全球GDP的%。
柴焕波认为,这叠压着的四次生活界面,向今人揭示了古人在望子岗的繁衍更迭。“这在湘南地区同时期考古遗址中尚属首次,对研究古越文化,建立湘南地区商周考古的年代分期和文化谱系,具有十分重要的研究价值”。
1月23日随州市检察院以熊振林涉嫌故意杀人罪向随州市中级法院提起公诉。2月9日随州市中级法院开庭审理此案,当庭作出一审判决,以被告人熊振林犯故意杀人罪判处死刑,剥夺政治权利终身。
宗春山以 “下雨天打孩子闲着也是闲着”“舍不得孩子套不住狼”等俗语表达了中国社会集体意识中对未成年人权利的漠视。他说,这显示了人们的意识里,孩子可以在关键时刻做出牺牲的,这种长期的文化根基影响着人们的行为方式。中国的文化和民族教育中并没有把儿童真正当作“人”。即使是文明的现代社会,也还是可以见到父母随意打骂孩子,甚至买卖孩子的现象。这其中最核心的问题就是不“承认”儿童的人权,甚至都可以决定他的生和死。
?当民警了解了这些情况后,发现,小韩肯定是被那个叫陈文斌的男子骗了。经过调查,民警最终在西安市东郊某网吧,将自称陈文斌的王三军抓获。
桃园市卫生局近日突击检查维莲诊所,发现护理师陈瑞蓉涉嫌重复使用针头为患者施打点滴和营养剂。该卫生局于5月11日勒令维莲诊所停止点滴及药物注射医疗业务,对陈瑞蓉处以三个月停业处分,并函送桃园地方法院检察署侦办。
而且更让赵女士感到奇怪的是从来没有腿脚毛病的乐乐开始喊腿疼,不愿意走路,总让赵女士背着上楼下楼,而且很不愿意去幼儿园,乐乐莫名其妙的肚子痛、腿疼、后背瘙痒吓坏了赵女士和家人,他们不知道乐乐到底怎么了,怎么会突然间有这些奇怪的病状,更让赵女士感到意外的是一次她给乐乐洗内衣时发现乐乐的内裤上有很多黄色粘稠分泌物,一个三岁左右的孩子怎么会有这样的分泌物呢?
?段祺瑞下野之初,住在天津日租界须磨街他的部下魏宗翰的公馆里,第二年应皖系下属田中玉之邀赴大连疗养,随行的有张夫人和二姨太,留在家里的几个姨太没了管束,常常打扮得花枝招展偷偷溜出去看电影、听戏、划船、逛市。?拇φ蟹湟?,常常半夜三更才回公馆。
7日一大早,记者赶到这家医院的门诊大厅,大厅内还有10多名男男女女,有拄拐棍的老太太,也有正值壮年的中青年男子,最多的是中年妇女,占了一半之多。
交通工作艰苦卓绝,每次行动都要突破多道封锁线,历时旬月,这就难以跟上瞬息万变的形势发展。及时便捷的信息交换,还要靠无线电。上海的周恩来和江西的毛泽东,都十分重视无线电电台。
李洪升,山东潍坊公安边防支队下营边防派出所的一名59岁的老护边员,曾经被公安部边防局表彰为“优秀护边员”。工作34年后,他将在今年年底退居二线,离开下营镇。
小陈的一位亲属说,小陈下班后坐公交车回到城区,事发时正在步行去换乘另一路公交车回家。他被撞飞后弹到了一棵树上,又跌落在地。他的双肩包带上,血迹斑斑。
?训练的主要内容包括,盘点局部挑衅应对守则、民官军联合进行居民疏散避难训练、针对DDoS攻击等网络恐怖活动进行应对训练。
?辩方质疑:庭上,辩方有五点质疑:一、为何现场只采集到一枚指纹;二、拍摄的指纹照片没有显示酒瓶全貌,而酒瓶的照片也没有显示指纹,因此无法证实指纹来自案发现场的酒瓶;三、最重要的定罪证据之一———带有指纹的酒瓶为何返还受害人,导致原证据无法恢复;四、王朝称这枚指纹是北市区警察王小龙于案发后在某娱乐城中向他骗取的;五、指纹的提取、鉴定均由石俊鹏一人完成,程序违法,该指纹不能作为证据使用和采信。
[工作人员]:中国人民政治协商会议第十一届全国委员会提案委员会关于政协十一届二次会议提案审查情况的报告(草案)。  [09:05]
一向“不善言辞”的周董,很少在演唱会上“妙语连珠”,难的是前晚杰伦除了张嘴闭嘴“佛山的朋友们”外,竟在唱毕代表作《开不了口》后,幽了大家一默:“《开不了口》这首歌一向演唱会的都是最后一首歌,你们想让它成为最后一首吗?‘不要!’来,大家跳起来!”随即献上多首快歌,将全场气氛推至最高点。
该工作人员解释说,虽然紧邻温榆河,但河水现在污染得非常严重,根本不敢使用,他们现在用的都是地下水,同时,他还指出球场抽取地下水的泵房所在位置。球场水务工作人员说,这个球场一天用水大约得几千吨,1500亩地,天天如此。公开资料显示,该球场今年3月26日正式开。?懦票本┕婺W畲蟮奶烊凰?扒虺。?嫉孛婊?锏?500亩。工作人员透露,为保证水量,地下水已经打到了二三十米深。
连日来,一条名为“温州市委常委、秘书长吴开锋遭小三逼宫曝光”的网帖被广泛流传,本报率先对此事进行了报道(详见3月29日本报A20),引发热议。昨日,浙江省及温州市有关部门证实,涉事的温州市委常委、市委秘书长吴开锋已被免去职务,正接受组织调查。
·全党同志要强化党的意识,牢记自己的第一身份是共产党员,第一职责是为党工作,做到忠诚于组织,任何时候都与党同心同德。
?人民网济南2月20日电 (记者 赵浩然)19日下午,山东省政协委员们展开分组讨论, 在科学技术界的分组讨论现。?未?芪?闭攵员ǜ嬷兴?岜U闲宰》课侍,提出了自己的观点。他认为在解决保障性住房问题上政府自身的能力是有限的,解决问题关键在于引入新的融资方式、商业机制,把保障房推向市场。他建议让有房产投资需求的人购买保障性住房产权,由政府和房房租赁人共同支付投资者房租。他解释说,让某一届政府一次性对保障性住房工作进行投入,对于该届政府来讲压力过大,根本上讲不利于问题的解决。他指出,保障性住房一般远离市区,这让很多居者有其屋的同时,生活成本提高了、生活质量下降了。如果保障性住房用地选在城区内,既可以满足投资者对闹市地产增值的预期,也可实现租住人生活品质的保障。
而“我们白着呢”演唱结束后,Ella更是一口咬定她就是范玮琪,连连发问,“你是不是和我有点熟”,“是不是喜欢飞翔”,为了证实其身份更是现场连线范玮琪,不料电话线那头竟传出了范玮琪的声音,声称自己“正在家带小孩”,这样的结果令猜评团始料不及,本来自信笃定的Ella直言“开始慌了”,观众更是毫无头绪,转猜其为梁静茹,结果当然未能成功揭面。有网友指出,“我们白着呢”声线独特,就是范玮琪。究竟是否如网友所猜“铁娘子”就是张韶涵,“我们白着呢”确实是范玮琪呢,下期节目即将揭晓。
?奥巴马在玛尼宫的游客留言簿中写道:“有幸参观这个见证了甘地生活的地方让我充满了希望,并受到了极大的激励。他是一个英雄。不仅是印度的英雄,而且是世界的英雄。”
  在浦东陆家嘴金融城的“黄金地段”,正在建设中的上海中心大厦攀至500米,晋升沪上“第一高楼”。从外滩隔岸相望陆家嘴,其繁华之景并不逊色于纽约曼哈顿。
第二盘何冰娇改变战术,打得更为耐心,这也帮助她取得了10比9的领先。但随后成池铉的多拍能力开始显现,她连得七分,再次把握住了场上节奏。在挽救一个赛点之后,何冰娇勾对角失误,成池铉以21比16再胜一局,韩国队把总比分扳成一平。
责编:判断奇数和偶数的更高效算法
[问题点数:100分,结帖人abigbadboy]
本版专家分:1258
CSDN今日推荐
本版专家分:5407
本版专家分:8026
2011年6月 VB大版内专家分月排行榜第一
本版专家分:5910
本版专家分:662
本版专家分:10311
本版专家分:5910
本版专家分:72786
2009年12月 C/C++大版内专家分月排行榜第一2009年6月 C/C++大版内专家分月排行榜第一
2011年5月 C/C++大版内专家分月排行榜第二2010年9月 C/C++大版内专家分月排行榜第二
2009年11月 C/C++大版内专家分月排行榜第三
本版专家分:67244
2013年8月 Linux/Unix社区大版内专家分月排行榜第一2012年11月 Linux/Unix社区大版内专家分月排行榜第一2012年10月 Linux/Unix社区大版内专家分月排行榜第一2012年9月 Linux/Unix社区大版内专家分月排行榜第一2012年7月 Linux/Unix社区大版内专家分月排行榜第一2012年6月 Linux/Unix社区大版内专家分月排行榜第一2012年5月 Linux/Unix社区大版内专家分月排行榜第一2011年11月 Linux/Unix社区大版内专家分月排行榜第一
2013年6月 Linux/Unix社区大版内专家分月排行榜第二2013年5月 Linux/Unix社区大版内专家分月排行榜第二2013年3月 Linux/Unix社区大版内专家分月排行榜第二2013年1月 Linux/Unix社区大版内专家分月排行榜第二2012年12月 Linux/Unix社区大版内专家分月排行榜第二2012年8月 Linux/Unix社区大版内专家分月排行榜第二2011年12月 Linux/Unix社区大版内专家分月排行榜第二2011年10月 C/C++大版内专家分月排行榜第二2011年10月 Linux/Unix社区大版内专家分月排行榜第二
2012年6月 C/C++大版内专家分月排行榜第三2012年6月 PHP大版内专家分月排行榜第三2012年5月 C/C++大版内专家分月排行榜第三2012年3月 Linux/Unix社区大版内专家分月排行榜第三2012年2月 Linux/Unix社区大版内专家分月排行榜第三2011年11月 C/C++大版内专家分月排行榜第三
本版专家分:433060
2017年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第二
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
本版专家分:1258
本版专家分:1258
本版专家分:0
结帖率 96.67%
本版专家分:607
本版专家分:1258
本版专家分:4
本版专家分:57224
2011年6月 总版技术专家分月排行榜第三
2011年11月 专题开发/技术/项目大版内专家分月排行榜第一2011年10月 专题开发/技术/项目大版内专家分月排行榜第一2011年9月 专题开发/技术/项目大版内专家分月排行榜第一2011年8月 专题开发/技术/项目大版内专家分月排行榜第一2011年7月 专题开发/技术/项目大版内专家分月排行榜第一2011年6月 C/C++大版内专家分月排行榜第一
2011年7月 C/C++大版内专家分月排行榜第二2011年5月 专题开发/技术/项目大版内专家分月排行榜第二
2011年5月 C/C++大版内专家分月排行榜第三2008年1月 C/C++大版内专家分月排行榜第三2007年12月 C/C++大版内专家分月排行榜第三
本版专家分:0
本版专家分:57224
2011年6月 总版技术专家分月排行榜第三
2011年11月 专题开发/技术/项目大版内专家分月排行榜第一2011年10月 专题开发/技术/项目大版内专家分月排行榜第一2011年9月 专题开发/技术/项目大版内专家分月排行榜第一2011年8月 专题开发/技术/项目大版内专家分月排行榜第一2011年7月 专题开发/技术/项目大版内专家分月排行榜第一2011年6月 C/C++大版内专家分月排行榜第一
2011年7月 C/C++大版内专家分月排行榜第二2011年5月 专题开发/技术/项目大版内专家分月排行榜第二
2011年5月 C/C++大版内专家分月排行榜第三2008年1月 C/C++大版内专家分月排行榜第三2007年12月 C/C++大版内专家分月排行榜第三
本版专家分:1258
本版专家分:57224
2011年6月 总版技术专家分月排行榜第三
2011年11月 专题开发/技术/项目大版内专家分月排行榜第一2011年10月 专题开发/技术/项目大版内专家分月排行榜第一2011年9月 专题开发/技术/项目大版内专家分月排行榜第一2011年8月 专题开发/技术/项目大版内专家分月排行榜第一2011年7月 专题开发/技术/项目大版内专家分月排行榜第一2011年6月 C/C++大版内专家分月排行榜第一
2011年7月 C/C++大版内专家分月排行榜第二2011年5月 专题开发/技术/项目大版内专家分月排行榜第二
2011年5月 C/C++大版内专家分月排行榜第三2008年1月 C/C++大版内专家分月排行榜第三2007年12月 C/C++大版内专家分月排行榜第三
本版专家分:52
结帖率 85.71%
本版专家分:1258
本版专家分:0
本版专家分:24
本版专家分:1003
本版专家分:345
2011年2月 PHP大版内专家分月排行榜第二2011年1月 PHP大版内专家分月排行榜第二
本版专家分:1
本版专家分:2
本版专家分:0
本版专家分:2
本版专家分:19
本版专家分:91
匿名用户不能发表回复!|新人专享好礼凡未购买过小册的用户,均可领取三张 5 折新人专享券,购买小册时自动使用专享券,最高可节省 45 元。小册新人 5 折券最高可省 15 元小册新人 5 折券最高可省 15 元小册新人 5 折券最高可省 15 元注:专享券的使用期限在领券的七天内。一键领取购买小册时自动使用专享券前往小册首页本活动仅适用于小册新用户知道了这样玩算法才够酷
想接触算法的朋友经常会问一句,算法难吗?我掐指一算,回答一般有3种结果,难,不难,have a try。其实这个问题并不好,我们接触的较多的一门课程叫数学,从小学到大学,甚至工作了,还不放过我们,而这个你很熟悉的东西,你觉得它难吗?那么结果出来了,更多的是一种兴趣,很多人老是说自己智商不够用,那是你根本不想认真去面对它,这么跟你说吧,天赋差距肯定是有的,但你身边可以说80%的人智商都跟你差不多。那你还有什么理由不把这篇文章看完,挑战一下自己?或许你能找到更优的解?或许你面试的时候正好碰到?岂不美哉?
本篇文章部分题目还是比较烧脑,因此收藏一下在空闲的时候去挑战,或者记住题目,可能潜意识就已经完成了。Good Luck!
现在就让我们一起来玩一玩几个有趣的算法题吧!
输入一个整数n,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1的数字有1、10、11和12,1一共出现了5次。
碰到问题,无论什么时候都要冷静地分析,而不是一股脑地写代码,即使这道题再简单。那有人问了,1+1还需要思考吗?傻子都知道等于2。我不想打击你,有时候等于3,运气好可能等于4,悲剧点可能等于1,甚至等于0。
很多所谓的真理都是有条件的,那么我们应该去分析这些条件,得到一个最优解。回归正题,当我们第一眼看到这个题目的时候的第一个思路就是增加一个统计变量,然后遍历1~n,针对每一个数(大于10需要除以10)取余是否等于1来增加我们的统计变量,最后返回我们的统计变量。思路很明确,代码实现也很简单,如下:
public static int numberOf1Between1AndN(int num) {
if (num & 1) {
int count = 0;
for (int i = 1; i &= i++) {
count += numberOf1(i);
private static int numberOf1(int num) {
int count = 0;
while (num != 0) {
if (num % 10 == 1) {
num /= 10;
在时间复杂度的计算中,有两步,首先有一个O(n)的遍历,其次针对每个整数又有O(lgn)的除法取余计算,因此它的时间复杂度为O(nlgn)。这里要补充一点是lgn(以10为底)和log2n(以2为底)在我们分析时间复杂度的时候可以认为是没有区别的,因为它们的比值是个常数,因此这里记时间复杂度为O(logn),直接忽略底数,下面的分析也是如此。那我们再想想有没有更好的办法呢?当时我想到一个办法,整数拼接成字符串,然后遍历字符串判断1的个数,我开开心心地写完了代码,仔细一看,我那个后悔啊,这尼玛也太low了,不忍直视啊。但还是把代码贴了。
public static int numberOf1Between1AndN(int num) {
if (num & 1) {
StringBuilder sb = new StringBuilder();
for (int i = 1; i &= i++) {
sb.append(i);
int count = 0;
for (int i = 0, n = sb.length(); i & i++) {
if (sb.charAt(i) == '1') {
简单地分析一下为什么low,首先我们不管使用了辅助空间StringBuilder,根本没有提的必要,其次在num的循环中,StringBuilder会去append一个整数,如果对StringBuilder稍微有点了解的话就知道,底层无非是个char数组,初始化的时候会创建一个固定容量的数组,每次不够用的时候将会扩充容量,怎么扩充?无非是copy,又是一次数组的遍历,其容量增长又是指数级别的,难免会浪费内存。诶,这当做一个反面教材,耻辱啊。
再想想,有没有好一点的方法?好像没想出来,看一眼答案?刚看书本前面几行的分析,我就知道怎么解了,好歹我也被女神夸奖过是数学神童,对数字还是很敏感的。大体思路是这样的:核心思想是分析1出现的规律,举个例子,1~520,我们来分析,可以分为1~20和21~520,其中20正好是520去掉最高位后的结果,先来分析21~520,这些数中,哪些位会出现1?个位,十位,百位,你这不是屁话么?文明,文明,文明(手动滑稽)。首先分析最高位,带1的无非是100~199,共计100个,那么这里有一种情况是最高位就是1,比如120,带1的是100~120,共计20+1个。这个比较好理解,接下来算是难点,我们刚刚分析了最高位,也就是百位。那接下来就是十位,我们可以分成这样几个段,21~120,121~220,221~320,321~420,421~520。有没有发现什么规律呢?没有?老哥你是不是王者荣耀被队友坑了?冷静点。假设针对每段十位上固定为1,那么个位是不是可以有0~9,同理,个位固定为1,十位同样有0~9种情况。那么结果很明显了,5乘以2乘以10,一共为5段(5),我们可以固定十位和个位(2),固定一位后,只剩下一位且这位有0~9共10种可能(10)。我们来简单推演一边,5就是最高位的数字,2可以理解为出去最高位后剩下的位数,这里我们出去百位,那么只剩下十位和个位,10是固定某一位是1的情况下,剩下几位就是10的几次幂(出去最高位),我们这里是10^1,假如是1314,固定千位为1,那么是不是十位和个位各有0~9种情况,就是10^2。综上所述,我们的公式也出来了,即最高位的数字乘以除去最高位后剩下的位数乘以固定某一位是1的情况下,10的剩余位数次幂。有了公式还不好办?分分钟撸出代码。
public static int numberOf1Between1AndN(int num) {
if (num & 1) {
int len = numberOfLen(num);//得到位数
if (len == 1) {
return 1;//如果只有1位,那必然是1,也就说只有一个
int pow = (int) Math.pow(10, len - 1);//存储起来,避免重复计算
int maxDigit = num ///最高位数字
int maxDigitCount = maxDigit == 1 ? num % pow + 1 ://统计最高位为1的情况
int otherDigitCount = maxDigit * (len - 1) * (pow / 10);//统计剩余位为1的情况
return maxDigitCount + otherDigitCount + numberOf1Between1AndN(num % pow);
private static int numberOfLen(int num) {
int len = 0;
while (num != 0) {
num /= 10;
细心的朋友发现我们用了递归,更细心的朋友发现我们只分析21~520,剩下的不就是520%100吗?这并不是重点哈,重点是为什么这样的算法更高效,首先我们采用了递归,但递归次数就是我们n的位数,从numberOfLen方法可知为O(logn),其次每次递归都会去调numberOfLen方法又是一个O(logn),如果对底层很了解的朋友会对Math.pow指出问题,你想想这不是几个相同的数的乘法吗?因为计算机可没那么聪明。而java底层对pow的实现采用的是根据奇偶判断递归,感兴趣的可以去看看,而时间复杂度为O(logn),其中n为最高位-1,在我们分析看来,可以理解为求位数,那么就是O(logn),那么总的时间复杂度可以说是O(log(logn)),显然这玩意是小于O(logn)的,因此方法里面的时间复杂度O(logn),算法的总时间复杂度为O(logn*logn),即O(logn)。看不懂运算的赶紧回去补补数学知识。
把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。
首先我们要明确几个固定的点,n个骰子扔出去,那么和至少也有n(所有都是1的情况),最大有6n(所有都是6的情况),排列总数为6^n(不清楚的同学去看看概率学)。这些都是确定的,而我们要求的是每种朝上之和的概率,有一种的方法是我们创建一个数组,容量为6n-n+1,这样正好能把所有情况都存储下来,而值正好是该情况出现的次数,最后再遍历数组取出值比上6^n便是最后的结果。那如何去存储呢?n可能太抽象了,不妨试试一个具体常量,比如2个骰子并打印所有值出现的概率,那你会怎么做呢?你是不是会写出这样的代码来?
private static final int MAX_VALUE = 6;
public static void printProbabilityOf2() {
int number = 2;
int maxSum = number * MAX_VALUE;
int[] pProbabilities = new int[maxSum - number + 1];
//初始化,开始统计之前都为0次
for (int i = i &= maxS i++) {
pProbabilities[i - number] = 0;
int total = (int) Math.pow(MAX_VALUE, number);
for (int i = 1; i &= MAX_VALUE; i++) {
for (int j = 1; j &= MAX_VALUE; j++) {
pProbabilities[i + j - number]++;
for (int i = i &= maxS i++) {
System.out.println(String.format(Locale.getDefault(), "s的值为%d,概率为%d/%d=%.4f", i, pProbabilities[i - number], total, pProbabilities[i - number] * 1.0f / total));
如果你能写出这样的代码来,说明你思路是对的,但缺少递归的思想,其实我自己也缺少,善用递归的大佬我只能交出膝盖,递归的方法一开始没想到,我只能想到第二种方法,只能用用循环啊。
回归正题,有2个骰子你便套了两层循环,3个你是不是会套3层循环?4个4层?5个5层?那n个是不是n层啊。像这种不确定循环次数且是嵌套的情况下,你应该想到递归。一般解决思路无外乎两种,要么循环,要么递归(说的容易,但就是tmd想不到啊)。而递归的实现需要一个判断语句促使继续递归下去还是终止递归。那这样行不行?我从第一个骰子开始,判断条件为当前扔的骰子为最后一个,那么我们把数据记录下来,否则扔下一个骰子直到是最后一个为止。说干就干,献上代码。
private static final int MAX_VALUE = 6;
public static void printProbability(int number) {
if (number & 1) {
int maxSum = number * MAX_VALUE;//点数和最大值6n
int[] pProbabilities = new int[maxSum - number + 1];//存储每一种可能的数组
//初始化,开始统计之前都为0次
for (int i = i &= maxS i++) {
pProbabilities[i - number] = 0;
int total = (int) Math.pow(MAX_VALUE, number);//情况种数6^n
probability(number, pProbabilities);//计算n~6n每种情况出现的次数并存储在pProbabilities中
for (int i = i &= maxS i++) {
System.out.println(String.format(Locale.getDefault(), "s的值为%d,概率为%d/%d=%.4f", i, pProbabilities[i - number], total, pProbabilities[i - number] * 1.0f / total));
public static void probability(int number, int[] pProbabilities) {
for (int i = 1; i &= MAX_VALUE; i++) {//从第一个骰子开始
probability(number, 1, i, pProbabilities);
* 不停递归每条路线直到扔完所有骰子
* @param original
总共骰子数
* @param current
当前扔的骰子
* @param sum
每条路线计算和
* @param pProbabilities 存储数组
public static void probability(int original, int current, int sum, int[] pProbabilities) {
if (current == original) {
pProbabilities[sum - original]++;
for (int i = 1; i &= MAX_VALUE; i++) {
probability(original, current + 1, sum + i, pProbabilities);
我们发现,只不过更改了2个骰子中间循环嵌套部分,采用递归实现。我们再来回顾下2个骰子的时候的统计代码是:
pProbabilities[i + j - number]++;
i+j其实就是每种情况的和,而我们这里用sum来计算每条路线的和,理解这一点,那么就很简单了。但递归有着显著的缺点,递归由于是方法调用自身,而方法调用时有时间和空间的消耗的:每一次方法调用,都需要在内存栈中分配空间以保存参数、返回地址及临时变量,而且往栈里压入数据和弹出数据都需要时间,另外递归中有可能很多计算都是重复的,从而对性能带来很大的负面影响。其实我内心是崩溃的,你倒是写出来啊(个人认为递归本身是一种很牛B的思路,但计算机不给力)。反正就这道题,我第一次做的时候没想到递归,直接想到的是循环,废话不多说,直接分析下循环是怎么做到的。
分析前,我们得明白一个问题,假设我当前的骰子是第k次投掷且点数和为n,记为f(k,n)。那么问题来了,k-1个骰子所得点数和又有哪几种情况,可能第k次投了个1,那么k-1个骰子所得点数为f(k-1,n-1),同理,其它情况为f(k-1,n-2),f(k-1,n-3),f(k-1,n-4),f(k-1,n-5),f(k-1,n-6)。这几种情况都是第k-1次投掷到第k次投掷的路线,那么加起来是不是就是等于f(k,n)?我们来简单验证下(已知f(1,1)=f(1,2)=f(1,3)=f(1,4)=f(1,5)=f(1,6)=1,这个不用说了吧),比如我们想求f(2,4),根据公式f(2,4)=f(1,3)+f(1,2)+f(1,1)+f(1,0)+f(1,-1)+f(1,-2),不对啊,咋可能f(1,0),至少也得f(1,1)啊。没毛病,你能投掷出0来?我们得到一个限制条件,n-z必须保证大于等于k-1,其中1&=z&=6,k&=2。那么最终结果f(2,4)=f(1,3)+f(1,2)+f(1,1)=1+1+1=3。2个数和为4,共有3种情况((2,2),(1,3),(3,1)),好像很对诶,再来验证个长一点的?f(2,7)=f(1,6)+f(1,5)+f(1,4)+f(1,3)+f(1,2)+f(1,1)=6,那是不是6呢?((1,6),(6,1),(2,5),(5,2),(3,4),(4,3))。其实这根本不用验证,这是比较著名的动态规划思想。有兴趣的可以学习一下,由于最近接触比较多,我就一下子想出来了,要是放在平时,可能要想几分钟(手动滑稽)。
思想知道了,那么我们如何编程呢?这里有个问题是,我们需要上一次计算的结果来计算本次的结果。关于存储,我们首先想到的就是数组,其中数组容量很简单,就是点数和最大值+1。因为它的下标就表示当前点数和,值表示出现了几次。那如何切换呢?从分析上看,我们至少需要2个数组,每次计算完都要交换,这里有种优雅的实现方式,采用二维数组,一维乃标志位,取flag=0,利用1-flag达到优雅切换。难点也分析的差不多了,这里贴代码,代码是根据书上改编的,我自己实现的并不是这样,但思想是一样的。
private static final int MAX_VALUE = 6;
public static void printProbability(int number) {
if (number & 1) {
int[][] pProbabilities = new int[2][MAX_VALUE * number + 1];
for (int i = 0; i & MAX_VALUE * number + 1; i++) {//初始化数组
pProbabilities[0][i] = 0;
pProbabilities[1][i] = 0;
int flag = 0;
for (int i = 1; i &= MAX_VALUE; i++) {//当第一次抛掷骰子时,有6种可能,每种可能出现一次
pProbabilities[flag][i] = 1;
//从第二次开始掷骰子
for (int k = 2; k &= k++) {
for (int i = 0; i & i++) {//不可能发生的为0
pProbabilities[1 - flag][i] = 0;
for (int i = i &= MAX_VALUE * i++) {//第k次掷骰子,和最小为k,最大为MAX_VALUE*k
pProbabilities[1 - flag][i] = 0;//重置
for (int j = 1; j &= i && j &= MAX_VALUE; j++) {//执行f(k,n)=f(k-1,n-1)+f(k-1,n-2)+f(k-1,n-3)+f(k-1,n-4)+f(k-1,n-5)+f(k-1,n-6)
pProbabilities[1 - flag][i] += pProbabilities[flag][i - j];
flag = 1 -//切换数组,保证打印的为最新数组,计算的为上一次计算所得数组
int total = (int) Math.pow(MAX_VALUE, number);
for (int i = i &= MAX_VALUE * i++) {
System.out.println(String.format(Locale.getDefault(), "s的值为%d,概率为%d/%d=%.4f", i, pProbabilities[flag][i], total, pProbabilities[flag][i] * 1.0f / total));
本题差不多到这就结束了,代码中其实有个小细节哈,那就是精度问题,细心的小伙伴肯定看出来了,还在骂我菜呢!我想说,这打印结果,我自己看的,想简洁一点,大家可以根据需要修改精度。
0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这圆圈里删除第m个数字。求出这圆圈里剩下的最后一个数字。
没错,这就是著名的约瑟夫问题并伴随着一段浪漫的故事,故事内容我就不说了,以免被认为凑字数。。。
这个问题其实很简单哈,题目已经说的很详细了,不停的转圈,报到m就出局,可能有的同学会去纠结环的事情哈,没必要哈,只要出局的顺序是对的,让人看上去是环就行了,卧槽,我不能说太多了。。。上上上代码:
* @param totalNum 总人数
* @param m
public static void yueSeFu(int totalNum, int m) {
// 初始化人数
List&Integer& start = new ArrayList&Integer&();
for (int i = 0; i & totalN i++) {
start.add(i);
//从第k个开始计数,也就是说从1开始报数
int k = 0;
while ((size = start.size()) & 0) {
//第m人的索引位置
k = k % size - 1;
if (k & 0) {// 判断是否是最后位置
System.out.println(start.get(size - 1));
start.remove(size - 1);
k = 0;//删除最后一个后重新开始
System.out.println(start.get(k));
start.remove(k);
如果真是这么简单还有必要晒出来吗?可是上面的代码时间复杂度不是O(n)吗?咋看一下好像还真是,真的是吗?你还需要多读书。不说这个,它还使用了长度n的辅助集合。当然,也可以不说这个,有没有更好的办法呢?精益求精啊。
我们冷静下来分析一下,如果原来的序列为0,1,···,k-1,k,k+1,···,n-1,其中k就是第一个出局的人,显然k=(m-1)%n。我们再来看看这样的映射:
n-1 -& n-k-2
k-1 -& n-2
有没有数学大佬,求一求这关系式?额,这还需要数学大佬么?显然f(x)=(x-k-1)%n啊。心里验算了几个,好像还真是。那逆映射呢?g(x)=(x+k+1)%n。厉害了,我的哥。不服的小伙伴可以用权威的数学验证。现在我们来假设一个函数f(n)就是针对于序列为0~n-1的最后留下来的数字,那么很显然f(n-1)就是针对于序列为0~n-2的最后留下的数字。那么根据上面我们得出的映射关系式,f(n-1)留下的数字必然等于f(n)留下的数字,但它们确切来说属于不同函数,一个是针对0~n-1,一个是针对0~n-2,但是根据上面的逆映射我们可以推出原来针对于0~n-1中的数字。
我们再看一眼上面的映射,右边是不是0~n-2的序列?左边是不是针对于0~n-1,去掉k之后的序列?那么f(n)是不是必然存在左边的序列中?那么是不是说f(n-1)代入公式g(x)=(x+k+1)%n,最后等于f(n)呢?很好,最后得出这样的公式f(n)=[f(n-1)+k+1]%n,我们又已知k=(m-1)%n,继续代入,最后解得f(n)=[f(n-1)+m]%n。其中n-1必须要大于0,即n&1,那么一个人也能玩这游戏吧?谁说不可以?大伙说是不是?那么n=1的时候结果不就是0吗?公式都有了,代码就贼简单:
* @param totalNum 总人数
* @param m
public static void yueSeFu(int totalNum, int m) {
if (totalNum & 1 || m & 1) {
throw new RuntimeException("这游戏至少一个人玩!");
int last = 0;
for (int i = 2; i &= totalN i++) {
last = (last + m) %
System.out.println("最后出局的是:" + last);
这3道题下来大家觉得怎么样?是不是觉得算法特别有意思?但我感觉绝大多数的小伙伴已经右上角了。坚持到这里的小伙伴,我很佩服你,很欣赏你,我看你骨骼精奇,是万中无一的武学奇才,哦,不,是难得一见的逻辑算法天才,这里留你两道题(用java语言)。
求1+2+···+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
写一个方法,求两个整数之和,要求在方法体内不得使用+、-、*、/四则运算符号。
题目很无聊却很有意思,第一道题,我就想出一种,就是递归+异常,第二道表示不看解答真想不出来,智商已经欠费,诶,大家可以考虑与、或、非、异或。当然了,看过的小伙伴肯定很熟悉这些题目,包括最上面3道题,因为均出自于这本书,只是很多分析掺杂了我自己的想法,用的是我自己的思路把这个思想说出来,如果哪里错了,大佬一定要指出来。
最后,感谢一直支持我的人!
加入掘金和开发者一起成长。发送简历到 hr@xitu.io,期待你的加入!分享

我要回帖

更多关于 七星彩出号绝密算法 的文章

 

随机推荐