首页 > 其他分享 >51nod 1138 连续整数的和 好题

51nod 1138 连续整数的和 好题

时间:2023-02-07 12:02:28浏览次数:42  
标签:1138 No 51nod 好题 long int flag printf include


给出一个正整数N,将N写为若干个连续数字和的形式(长度 >= 2)。例如N = 15,可以写为1 + 2 + 3 + 4 + 5,也可以写为4 + 5 + 6,或7 + 8。如果不能写为若干个连续整数的和,则输出No Solution。

 收起

输入

输入1个数N(3 <= N <= 10^9)。

输出

输出连续整数中的第1个数,如果有多个按照递增序排列,如果不能分解为若干个连续整数的和,则输出No Solution。

输入样例

15

输出样例

1
4
7

分析:

假设[a,a+k-1]满足和=n

a,a+1, a+2,……a+k-1

k*a+k*(k-1)/2=n

k^2+(2*a-1)k-2n=0

这题一开始想的暴力枚举a,

k=【(1-2a)+(long long)(2*a-1)*(long long)(2*a-1)+8*n】/2

果断的T了

这题需要转化一下啊思想

枚举k

k^2+k=2n

取a=1,k可以取到最大不超过sqrt(2*n)

即k的取值范围(2,sqrt(2*n))

 

超时代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
int n;
while(~scanf("%d",&n))
{
int flag=1;
for(int a=1;a<=n/2;a++)
{
double x=(long long)(2*a-1)*(long long)(2*a-1)+8*n;
x=sqrt(x);
if(x==(int)x)
{
if(((int)x+1-2*a)%2==0)
{
printf("%d\n",a);
flag=0;
}
}
}
if(flag==1)
printf("No Solution\n");
}
return 0;
}

AC代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
int n;
scanf("%d",&n);

int flag=1;
for(int k=sqrt(2*n);k>=2;k--)
{
if((2*n+k-k*k)%(2*k)==0)
{
printf("%d\n",(2*n+k-k*k)/(2*k));
flag=0;
}

}
if(flag==1)
printf("No Solution\n");

return 0;
}

 

标签:1138,No,51nod,好题,long,int,flag,printf,include
From: https://blog.51cto.com/u_14932227/6041857

相关文章

  • 51nod 1095 Anigram单词
    1095Anigram单词一个单词a如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的Anigram,例如单词army和mary互为Anigram。另:相同的2个单词不算Anigram。现在给定......
  • 51nod 1133 不重叠的线段
    X轴上有N条线段,每条线段有1个起点S和终点E。最多能够选出多少条互不重叠的线段。(注:起点或终点重叠,不算重叠)。例如:[15][23][36],可以选[23][36],这2条线段互不重叠。 收......
  • 51Nod 1050 循环数组最大子段和
    N个整数组成的循环序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续的子段和的最大值(循环序列是指n个数围成一个圈,因此需要考虑a[n-1],a[n],a[1],a[2]这样的......
  • 超级无敌神仙炫酷无敌原神大王好题。
    都是神题,难度3000上下。有些都是看题解做的,就当涨知识见世面了。学OI没做这些题,简直就是打游戏不玩原神,看vtb不看東雪蓮,听歌不听曹万江,成功学不学cjx,看闲话不看韩神,只......
  • 差分约束好题
    1、MagicProblem-7176(hdu.edu.cn)思路:求的是区间总和,所以考虑和前缀和进行结合,将前缀和a[i](前i个数的前缀和)作为边权。然后考虑限制条件。首先,区间[l,r]的总和小于......
  • P2657 [SCOI2009] windy 数 数位DP好题
    P2657[SCOI2009]windy数-洛谷|计算机科学教育新生态(luogu.com.cn)数位DP好题主要问题是:不含前导零且相邻两个数字之差至少为 2solution:现在枚举到了第i位......
  • 一些好题
    P3034不是很常规的题目。考虑奶牛之间的相对位置。因为一头奶牛最多跳出来一次,所以两头奶牛的相对位置最多改变两次。这样就可以求出任意两头奶牛的相对位置。这样的......
  • 好题分享、心路历程(力扣618)—— case when
    【题目介绍】该题为力扣618,名为学生地理信息报告。【题型分类】属于casewhen专题。官网标为困难题,符合。【思路分享】这里先分享where过滤的等价写法。关键点......
  • 省选好题记录
    正式转战省选了。听某神犇说需要刷够1000道省选/jk赶紧开刷。记录从2023年开始2023一月2023.1.2CF1142D十分牛逼的分治题目。题面:给定\(n\)个不降的数组。有一......
  • 好题分享、心路历程(力扣601)——连续登录
    【题目介绍】该题为力扣601,名为体育馆的人流量。【题型分类】属于连续专题。官网标为困难题。【思路分享】这里的连续类似时间连续,采用row_number()技巧解题。关......