题目描述

圣诞节这天,某商店准备了N个礼品盒,分别用整数1-N进行编号。其中,编号为1的盒子中有一个糖果,编号为2的盒子中有2个糖果,。。。编号为N的盒子中有N个糖果。这天一早,中山幼儿园的K个小朋友一起来到这间商店。作为当天的第一批顾客,这些小朋友可以从这N个礼品盒中选出两个拿走。小朋友们商量了一会儿后决定,他们拿走的糖果并不一定要多,但是一定要能够刚好平分给每个人。即拿走的两个盒子中的糖果总数一定要使K的倍数。现在他们想知道一共有多少种方案可供选择。

输入

每行两个正整数N和K,其中1<=N<=10^9,1<=K<=10^9。一行N=K=0
表示输入结束,这一行不用处理。

输出

对输入中除了N=K=0外的每一行,输出一行,这一行只有一个数,即其相对应的输入所得到的方案数。

样例输入

1 1
3 2
5 2
50 50
0 0

样例输出

0
1
4
24

数据范围限制

20%的数据N<=100;
80%的数据K<=1000;
每个输入文件最多有200行输入数据。


20%:
直接暴力,o(n`2)枚举每一种情况

代码如下:

var  ans,i,j,x,y,l:longint;a:array[0..1000000]of longint;
beginassign(input,'gift.in');assign(output,'gift.out');reset(input);rewrite(output);while not eoln() dobeginans:=0;l:=0;fillchar(a,sizeof(a),#0);readln(x,y);if (x=0)and(y=0) then begin close(input); close(output); halt; end;for i:=1 to x-1 dofor j:=i+1 to x doif (i+j)mod y=0 then inc(ans);writeln(ans);end;close(input);close(output);
end.

40%:
40分就要推出简易公式,枚举n个数可能可以拼成m的倍数——z。
①当(z>x)and(((x*2)-z) mod 2=0) max:=max+(x-(z-x)) div 2
②当(z>x)and(((x*2)-z) mod 2=1) max:=max+(x-(z-x)) div 2+1
③当(z<=x)and(z mod 2=0) max:=max+z div 2-1
④当(z<=x)and(z mod 2=1) max:=max+z div 2

代码如下:

var   max,x,y,z:int64;i:longint;
beginassign(input,'gift.in');assign(output,'gift.out');reset(input);rewrite(output);while not eoln() dobeginmax:=0;readln(x,y);if (x=0)and(y=0) then begin close(input); close(output); halt; end;for i:=1 to x*2 div y dobeginz:=i*y;if z>=x*2 then break;if z>x thenif (x*2-z) mod 2=0 then max:=max+(x-(z-x)) div 2else max:=max+(x*2-z) div 2+1else if z mod 2<>0 then max:=max+z div 2 else max:=max+z div 2-1;end;writeln(max);end;close(input);close(output);
end.

100%:
如果有x,y,a,b,x%k==a,y%k==b,a+b==k,则(x+y)%k==0。根据这个特性,我们可以列张表,然后利用乘法原理,一一配对。然而,可以直接被k整除的,要特殊判断;k为偶数时也要特判断。
再分情况讨论:
1、k为奇数且n%k没过k一半时
2、k为奇数且n%k过k一半时
3、k为偶数且n%k没过k一半时
4、k为偶数且n%k过k一半时

代码如下:

var  n,m,x,y,z,x1:int64;
beginassign(input,'gift.in');assign(output,'gift.out');reset(input);rewrite(output);readln(n,m);while (n<>0)and(m<>0) dobeginx:=n div m;y:=n mod m;z:=(m-1) div 2;x1:=x*(x-1)div 2+x*x*z;if (m mod 2=0) then x1:=x1+x*(x-1)div 2; if y>0 thenbeginif (y>=z) then x1:=x1+x*z else x1:=x1+x*y;y:=y-z;if (y>0)and(m mod 2=0)thenbeginx1:=x1-x*(x-1)div 2+x*(x+1) div 2;y:=y-1;end;if (y>0) then x1:=x1+(x+1)*y;end;writeln(x1);readln(n,m);end;close(input);close(output);
end.

JZOJ 4.22 2129——【2017.4.21普及】礼物相关推荐

  1. 802.11ac linux驱动下载,下载的驱动程序Realtek 8811CU Wireless LAN 802.11ac USB NIC 1030.22.0405.2017...

    Special offer. See more information about Outbyte and uninstall instructions. Please review Outbyte ...

  2. 3星|《财经天下周刊》2017年21期:海外购几乎是亚马逊中国的最后一根救命稻草...

    财经天下周刊 双周刊 2017年21期 第一次看这份杂志.总体评价3星,有一些参考价值. 以下是本期一些内容的摘抄: 1:微软高层亲口宣布放弃WP系统,不过是为早就"脑死亡"的WP ...

  3. 德纳社区项目进度跟进(22年2月14日-22年2月21日)

    德纳社区秉承长期服务原则,对于参与过的项目会进行持续跟进,并以周报的形式跟大家汇报,以下是22年2月14日-22年2月21日一周的项目进展,欢迎查看. 1.Acala (一个兼容以太坊的智能合约平台) ...

  4. 阿尔·里斯-市场营销的22条法则(22条商规)-21

    阿尔·里斯-市场营销的22条法则(22条商规) 21.驾驭趋势法则 成功的市场营销应立足于长期趋势,而不是时尚 时尚就像海洋中的波浪,而趋势则是海洋中的大潮.时尚会得到大肆的 宣传,而趋势却很少为人们 ...

  5. JZOJ(中山纪中)2018.01.21【NOIP普及组】模拟赛D组(第二题)

    1361. [2011.12.31普及模拟]抓捕嫌疑犯(suspect)  (File IO): input:suspect.in output:suspect.out 时间限制: 1000 ms   ...

  6. 自古成功在尝试 jzoj 2017.8.21 B组

    第一题 [NOIP2011模拟7.29]铃仙·优昙华院·稻叶 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Detailed ...

  7. 花千骨服务器维护10月22号,CF10月21、22日全区全服维护更新公告

    为了进一步稳定服务质量,提高游戏品质,<穿越火线>将于10月21日(星期三).22日(星期四)8:00-11:00进行服务器停机维护,跨版本升级至3.5.4.如果在维护期间无法完成维护相 ...

  8. 第十三届Revit二次开发实战训练课程22年3月21在武汉举办

    关于举办第十三届Revit开发实战训练课程的通知 各相关单位: 为贯彻落实住建部<2016-2020年建筑业信息化发展纲要>,提升国内建筑行业BIM科研和课题创新能力,强化企业和高校在各个 ...

  9. JZOJ 5678. 【GDOI2018Day2模拟4.21】果树

    Description NiroBC 姐姐是个活泼的少女,她十分喜欢爬树,而她家门口正好有一棵果树,正好满足了她爬树的需求. 这颗果树有N个节点,节点标号 1-N.每个节点长着一个果子,第i个节点上的 ...

最新文章

  1. 根据经纬度获取用户当前位置信息
  2. android fm 耳机,Android杂谈:音频调试小计
  3. 解释型语言与编译型语言的区别
  4. BZOJ.4738.[清华集训2016]汽水(点分治 分数规划)
  5. DevExpress GridControl使用方法总结
  6. es6中新增对象的特性和方法
  7. Spring Boot系列教程五:使用properties配置文件实现多环境配置
  8. 作为一个职场中人的一些思考,关于做事的方式和思路
  9. [转载] python json 编码(dump/dumps:字典转化为json)、解码(load/loads:json转化为字典)
  10. python绘制风向玫瑰图和污染物玫瑰图
  11. 算法篇----求两数的最大公约数和最小公倍数
  12. 麒麟Linux启动目录,优麒麟目录结构介绍 系统入门必备
  13. PHP编程学习之路 2
  14. tomcat安全加固手册
  15. What is tethering and how do you enable tethering?
  16. 转----一个图形爱好者的书架.-也来介绍一下我的藏书.
  17. Win10自带OpenSSH的使用
  18. 基于Android的租车app
  19. 计算机如何寻找ppt文件,电脑上没保存的PPT怎么找回来
  20. java基础知识--(常用类)String类

热门文章

  1. 通知:清明节放假通知
  2. 【node版本与glup版本不兼容】primordials is not defined及Task function must be specified
  3. BullseyeCoverage代码覆盖率工具介绍
  4. matlab视觉呈现任务,视觉笔记 | 国内外优秀作品解读赏析(1)
  5. 牛客寒假训练营6 阿宁睡不醒
  6. 制作三星I9088 刷机ROM的实践(五)
  7. 优化算法 - 动量法
  8. 基于FPGA的FFT变换
  9. 二十一、提前退出提前返回(改写冗长的if-else语句)(2021/4/30)
  10. Qt+opencv 配置教程