暑期实践日志(一)

2015年7月6日

题解这道题目是一个数学题,其中有两个需要注意的地方。

第一:题目要求我们求将一个数分解成连续数字的和,而且要求数字个数最少。由题目意思可以推导出一个公式,所给的数N=(a+(a+k-1))/2。其中的a表示连续数字和中最小的那个数,k表示的是连续数字的个数,整个公式的由来是等差数列求和公式推导的。

第二:在求解时,虽然已经推导出了公式,但是在求解时,根据公式,我们采取遍历所有的k的值来求解a,如果从2到n遍历的话会超时。所以这里要注意,要从2到2*n开根号,这样可以避免超时。

代码:

#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n,k,flag=0;
        scanf("%d",&n);
        for(int i=2;i<=int(sqrt(n*2));i++)
        {
            int temp;
            temp=2*n+i-i*i;
            if(temp%i==0&&(temp/i)%2==0&&temp>0)
            {
                k=i;
                flag=1;
                break;
            }
        }
        if(flag)
        {
            printf("%d = ",n);
            int a=(2*n+k-k*k)/(2*k);
            for(int i=0;i<k;i++)
            {
               int ans=a+i;
                if(i==k-1)
                    printf("%d\n",ans);
                else
                    printf("%d + ",ans);
            }
        }
        else
            printf("IMPOSSIBLE\n");
    }
return 0;
}
时间: 2024-10-11 07:19:00

暑期实践日志(一)的相关文章

暑期实践日志(三)

开关问题 Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 6455   Accepted: 2463 Description 有N个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与此开关相关联的开关也会相应地发生变化,即这些相联系的开关的状态如果原来为开就变为关,如果为关就变为开.你的目标是经过若干次开关操作后使得最后N个开关达到一个特定的状态.对于任意一个开关,最多只能进行一次开关操作

暑期实践日志(五)

这道题是典型的二维线段树的题目,题目要求查询一个区间的最小值和最大值,并修改一个点. 代码: #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<vector> #include<queue> #include<set> #include<map> #include<cstdlib> u

暑期实践日志(二)

这道题的思路是,将题目中所描述的齿轮看成是圆,其中两个齿轮相互咬合则是两个圆相切,那么根据判断两个圆相切的方法来判断两个齿轮间是否咬合.其中还会用到齿轮传动的规律,即传动轮的速度由主动轮来决定,根据该题的描述可知所有齿轮中只有一个是主动轮,那么其他齿轮的速度都都它决定,随度的比值就是R1/Ri. 代码: #include <iostream> #include <cstdio> #include <cmath> #include <cstring> #inc

暑期实践日志(四)

Painter's Problem Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4912   Accepted: 2385 Description There is a square wall which is made of n*n small square bricks. Some bricks are white while some bricks are yellow. Bob is a painter and

Agile实践日志一 -- Grooming Session

Agile实践日志一  -- Grooming Session GroomingSession 这个Session主要Go through我们下一个Sprint须要做的Story,大家都清楚之后,在每一个Story最后我们会以 Good Agile 扑克牌来确认它的难度点.在sprint之前,做一个story的评估和规划,为接下来分story提供难度系数的參照. Story Story是敏捷的核心.一切task来自story,我们仅仅有制定了story.才干确定task.一切測试工作也是基于st

Agile实践日志(2)-- Daily Stand up 和 Retrospective Session

Agile实践日志 (2) -- Daily Stand up 和 Retrospective Session 在Scrum开发过程中,会有三种会议: Grooming (详见Agile实践日志(1)) , Daily Stand up 和Retrospective Meeting Daily Stand up Sprint期间,每天早上小组成员需要在固定的时间地点进行,时间大约15分钟.主要介绍一下昨天做了什么,今天需要做什么,信心完成指数(1-10) Done 昨天完成的 ToDo 今天要做

dotnet core 实践——日志组件Serilog

 前几天把基于quartz.net的部分项目代码移植到了dotnet core ,但是没增加日志功能,原因是没找到合适的组件. 今天终于找到了Serilog: https://github.com/serilog/serilog 源码 就大概讲一下: 1, vs 2015  新建Console Application (.NET Core) 项目. 2, 程序包管理器控制台: 安装如下组件:Serilog,Serilog.Sinks.Literate,Serilog.Sinks.RollingF

“正则表达式”实践日志

主要采用问和答的形式进行说明,旨在表达一些特殊零基础着手正则表达式会遇到的一些问题,以此记录. 我们知道,正则表达式是用一系列规则来匹配字符串的.在茫茫字符海中,如何才能找到你想要的“它”,显然是有一定技术含量的. 有人会问,找到一个字符串有什么难的?你看,找到“女神”两个字不是分分钟? 是的,找到这确实是,不可能很多事情都是这样的吧.以下展开. 1.精确匹配 正如上面所说,想找什么直接输入就可以了,何必大费周章. e.g: 女神 如果你要找的是一个名词,而不是一个句子中的一部分,那该如何处理?

Sql Server Tempdb原理-日志机制解析实践

笔者曾经在面试DBA时的一句”tempdb为什么比其他数据库快?”使得95%以上的应试者都一脸茫然.Tempdb作为Sqlserver的重要特征,一直以来大家对它可能即熟悉又陌生.熟悉是我们时时刻刻都在用,陌生可能是很少有人关注它的运行机制.这次我将通过实例给大家介绍下tempdb的日志机制. 测试用例 我们分别在用户数据库(testpage),tempdb中创建相似对象t1,#t1,并在tempdb中创建创建非临时表,然后执行相应的insert脚本(用以产生日志),并记录执行时间用以比较用以比