1218.纪念邮票

来源:互联网 发布:天策脸型数据 编辑:程序博客网 时间:2024/06/07 17:09

Description

邮局最近推出了一套特殊的纪念邮票,这套邮票共有N张,邮票面值各不相同,按编号顺序为1分,2分,......,N分。

小杭是个集邮爱好者,他很喜欢这套邮票,可惜现在他身上只有M分,并不够把全套都买下。他希望尽量买,最好刚好花光所有钱。作为一个集邮爱好者,小杭也不想买的邮票编号断断续续。所以小杭打算买面值a分至b分的b-a+1张连续的邮票,且总价值刚好为M分。

你的任务是求出所有符合要求的方案,以[a,b]的形式输出。

Input

输入文件只有一行,包含两个数N和M(1<=N,M<= 1,000,000,000)

Output

输出文件每行包含一个合法方案:[a,b]

按a值从小到大输出。

输出文件不含任何空格

举例:45=3*15,5*9;

           14,15,16

            7,8,9,10,11

#include <stdio.h>#include <math.h>int n,m;int main (){  scanf ("%d%d", &n, &m);  for (int i = 1;i <= sqrt (m);i++)  {    if ((m/i)%2 && m%i == 0 && i-(m/i)/2 > 0) printf ("[%d,%d]\n",i-(m/i)/2,i+(m/i)/2);    if ((2*m)%(2*i-1) == 0 && i-m/(2*i-1) > 0) printf ("[%d,%d]\n",i-m/(2*i-1),i+m/(2*i-1)-1);  }  for (int i = sqrt (m); i;i--)  {    if (i%2 && m%i == 0 && m/i-i/2 > 0) printf ("[%d,%d]\n",m/i-i/2,m/i+i/2);    if (i%2 == 0 && i == 2*(m%i) && m/i-i/2+1 > 0) printf ("[%d,%d]\n",m/i-i/2+1,m/i+i/2);  }  return 0;}


0 0