前言
今天一大早就欣欣然睁开了眼,而且还是被呼噜声给吵醒的,唉,是我上面的五年级的(巨佬)······
今天做了四道题
比赛时才拿了10分,唉,其他题都是WA的WA,TLE的TLE,但之后又改了,爽,瞬间拿了160分
第一题
题目大意
对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M
输入样例
10000
输出样例
18 142
297 328
388 412
1998 2002
解题思路
这道题一开始是用暴力来做的,后来发现时间超限,就把它优化了一下,交上去就AC了
程序如下
第一次做的60分代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define r register
using namespace std;
int m,a[1000000],b[1000000],t;
int main()
{
freopen("combo.in","r",stdin);
freopen("combo.out","w",stdout);
scanf("%d",&m);
for(r int i=1;i<=m/2;i++)
{
a[i]=a[i-1]+i;//前缀和
if(a[i]>=m)//判断是否大于,如果大于就不用了
{
t=1;
for(r int j=t;j<=i