博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vijos- P1383盗窃-黑珍珠 (python + 代码优化)
阅读量:7240 次
发布时间:2019-06-29

本文共 906 字,大约阅读时间需要 3 分钟。

P1383盗窃-黑珍珠
标签:

背景

怪盗基德 VS OIBH

第二话

描写叙述

今次怪盗基德再次对阵OIBH,目标是Black Star!基德已经突破了数层封锁,到达

了OIBH总部存放Black Star的房间门口。OIBH的人也不是等闲之辈,他们在门上
设了password。password问题上仅仅有两个正整数n,m。

基德已经获悉password的生成方法。现

在要你帮他计算出password。

生成方法是这种:

设一个数组a[1..n](n即是上述中的n)中按递增存放了1..n这n个数。数组s是
a的子数组(就是集合s为集合a的子集)。而数组s中随意两个数的和都不被m整
除。s中数的数目最大值就是password!

格式

输入格式

一行两个整数n,m

输出格式

仅仅有一个数max,即password。

例子1

例子输入1

50 7

例子输出1

23

限制

每一个点1S

提示

1<=n,m<=10000

非常easy哦~~

来源

From 玛维-影之歌;

感谢kaito&aoko提供測试数据

此题的要素:

将1....n对m进行取余

得到了0.....m -1

显然假设0出现过的话,0仅仅能出现一次,

接着能够发现因为取余得到的结果的顺序是如此:0..5..m-1,0...5...m-1

所以在m/2前出现的数肯定比后面的数多,然后又由于x + y == m是不成立的

所以我们仅仅要取m/2范围内的数就能够了

#!/usr/bin/env python3# -*- coding: utf-8 -*-import mathn, m = map(int,raw_input().split())L = []F = [0] * mfor i in range(1,n + 1):    F[i % m] += 1cnt = 0for i in range(1, m / 2 + 1):    cnt += F[i]if F[0]:    cnt += 1if m % 2 == 0:    if F[m / 2]:        cnt -= F[m / 2] - 1print cnt
你可能感兴趣的文章
可重入锁 RLOCK(转)
查看>>
DataTable排序结果的纠正
查看>>
关于中国天气(Weather.com.cn)的查询
查看>>
关闭磁盘自动运行
查看>>
分享简化您的设计过程的CSS网格系统
查看>>
awk使用技巧
查看>>
mvc 截取上传图片做头像,自动生成不同小尺寸缩略图
查看>>
AutoCAD 命令统计魔幻球的实现过程--(1)
查看>>
判断是大端字节序还是小端字节序
查看>>
ZOJ 1985 Largest Rectangle in a Histogram(动态规划+路径压缩)
查看>>
javascript中return false;preventDefault();stopPragation()的区别
查看>>
硬件原理图和实物对比理解_EM310模块电路
查看>>
【原】unity3d android工程签名
查看>>
BW中自定义数据源的Delta机制 (重点function抽取)
查看>>
如何解决Silverlight InitializeError #2103 - Invalid or malformed application: Check manifest
查看>>
Java程序优化的一些最佳实践(转)
查看>>
原因资料POST git-receive-pack (chunked)
查看>>
EZGUI下的动态图片的处理
查看>>
源代码分析Fragmentd的BackStack管理过程
查看>>
escape(s, t)函数的实现
查看>>