数学类

小喵有很多女朋友。有一天,小喵想给女朋友们发玫瑰花。由于一些不(ni)知(dong)道(de)的原因,小喵想按照以下规律给它的已排好序的N个女朋友们发玫瑰花:给第一个女朋友发一支玫瑰花,给第二个女朋友发两支,给第三个女朋友发三支…现在小喵想知道连续的几个女朋友手中的玫瑰花总和为M的所有可能,你能帮助小喵吗?
Input输入包含多组测试数据。每组测试数据包含两个整数N,M( 1 <= N, M <= 1000000000)。 输入以N=M=0结束。
Output对于每组例子,输出连续的几个女朋友手中的玫瑰花总和为M的所有可能,以起始女朋友编号从小到大排序。
Sample Input
20 10
50 30
0 0
Sample Output
[1,4]
[10,10]

[4,8]
[6,9]
[9,11]
[30,30]


首先,判断题目,如果为数学问题,观察能否对公式进行化简,用一个量便是各个量的关系,化简后进行循环。

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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值