高斯-我想的太简单了,当然不对,谁能给个思路

问题描述

我想的太简单了,当然不对,谁能给个思路

高斯公式
题目详情:
高斯在上小学时发明了等差数列求和公式:1+2+..+100=5050。现在问题在于给你一个正整数n,问你他可以表示为多少种连续正整数之和?(自身也算)。

输入格式:

多组数据,每组数据一行,一个正整数n。 0<n<2000000000

输出格式:

每组数据一行,包含一个正整数,表示结果。

答题说明:
输入样例

5

120

输出样例:

2

4

解释:

5=2+3=5

120=1+2+...+15=22+23+24+25+26=39+40+41=120

#include
#include
long long n;
void bin()
{
long long low,high,mid,sum;
low=1;
high=n;
while(low<=high)
{
mid=(low+high)/2;
if(mid*(mid+1)/2>n)
high=mid-1;
else
low=mid+1;
}
printf("%lldn",high);
}
int main()
{
scanf("%d",&n);
bin();
return 0;
}

解决方案

 void divide(int num)
{
    int i,j,a;
    for(i=2; i<=sqrt((float)num)*2; ++i)
    {
        if((num-i*(i-1)/2)%i==0)
        {
            a=(num-i*(i-1)/2)/i;
            if(a>0)
            {
                for(j=0; j<i; ++j)
                    cout<<a+j<<" ";
            }
            cout<<endl;
        }
    }
}

解决方案二:

直接用公式算,C#给你写一个,C++类似做法

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Solve(5));
            Console.WriteLine(Solve(120));
        }

        static int Solve(int sum)
        {
            int r = 0;
            for (int i = 1; i <= sum; i++)
            {
                double x1 = (-1.0 + Math.Sqrt(1 - 4.0 * (i - i * i - 2 * sum))) / 2.0;
                double x2 = (-1.0 - Math.Sqrt(1 - 4.0 * (i - i * i - 2 * sum))) / 2.0;
                if ((Math.Abs(x1 - (int)x1) < 0.00001 && x1 > 0) || ((Math.Abs(x2 - (int)x2) < 0.00001 && x2 > 0)))
                {
                    r++;
                }
            }
            return r;
        }
    }
}

解决方案三:

2
4
Press any key to continue . . .

解决方案四:

思路简单说下。
因为求和公式是 (首项+末项)*项数/2
比如1~100,就是(1 + 100)*100 /2 = 5050
所以只要穷举首项,有了首项和和,那么看末项是不是一个大于0的整数就可以了。
设末项是x,有 (i + x)*(x - i + 1)/2=sum,它其实是一个一元二次方程,x^2+x+(i-i^2-2sum)=0,根据公式
x1=-b+sqrt(b^2-4ac)/2 x2=-b-sqrt(b^2-4ac)/2就可以算出x。

解决方案五:

http://blog.csdn.net/luxiaoxun/article/details/7485291

解决方案六:

你的意思我可能是懂了,我有个思路不知道成不成,大概这样:

 public int GetCount(int num)
 {
       int count=0;//记录种数
             int x=0;//临时变量,与num比较
            for(int i=1;i<=num/2;i++)
            {
                  for(int j=i;j<num/2+1;j++)
                        {
                              x=x+j;//进行从i开始的连续正整数相加,x保存结果
                                    if(x==num)//判断,若x=num,说明找到一种相加的方法
                                    {
                                           count++;//方法数量+1
                                                 x=0;x清零
                                    }
                        }
            }
 }

这样也不知道对不对,我也是小白,C#入门,楼主试试

解决方案七:

public int GetCount(int num)
{
int count=0;//记录种数
int x=0;//临时变量,与num比较
for(int i=1;i<=num/2;i++)
{
for(int j=i;j<num/2+1;j++)
{
x=x+j;//进行从i开始的连续正整数相加,x保存结果
if(x==num)//判断,若x=num,说明找到一种相加的方法
{
count++;//方法数量+1
x=0;x清零
}
}
}
}

解决方案八:

 程序代码:

#include <stdio.h>
int main(void)
{
    int n;
    scanf("%d", &n);// 输入要分解的n
    for(int n1=1; n1<=n/2; n1++)// n1为最开头的数
    {
        for(int n2=n1+1; n2<n; n2++)// n2为最末尾的数
        {
            if((n1+n2)*(n2-n1+1) == n*2)// 用等差数列公式算和
            {
                //如果相等就输出结果
                for(int t=n1; t<=n2; t++)
                {
                    printf("%d,", t);
                }
                printf("n");
            }
        }
    }
    return 0;
}

你的思路估计是这个

时间: 2016-06-22
Tags: 高斯

高斯-我想的太简单了,当然不对,谁能给个思路的相关文章

缓存+HASH=高并发?你把高并发架构想得太简单!

[51CTO.com原创稿件]在互联网时代,高并发与高可用一样,已经变成系统的标配了,如果系统每秒查询率(QPS)没有上万,都不好意思跟人打招呼(虽然实际每天调用量不超过100).尤其在双十一期间,电商们凭借着藐视全球的流量,热心地分享自己的技术架构,几乎千篇一律地用缓存+哈希(HASH),仿佛这就是高并发的核心技术了.当然,如果你信了,那就离坑不远了. 缓存+哈希=高并发? 所谓知己知彼百战不殆,先来看看我们经常看到的高并发技术是什么. 资源静态化  活动秒杀页面是标准的高并发场景,活动期间单

可以推荐一个实验用IC读写器吗,学生用,不用太贵,可实现想要的简单功能

问题描述 可以推荐一个实验用IC读写器吗,学生用,不用太贵,可实现想要的简单功能 想给读写器加上一点自己想要的功能,譬如说刷卡时加上语音提示,不知道选用那个读写器,可以推荐一个吗,谢谢 解决方案 可以联系我,聊聊..

苹果Mac电脑不会中病毒?你想的太天真

  与Windows平台相比,似乎很少有用户吐槽Mac平台的安全性,那么这是否意味着苹果电脑就真的不会中病毒呢?当然不是. 苹果Mac电脑不会中病毒?你想的太天真(图片来自Yahoo) 前几年,闪回恶意软件在Java系统发现了一个安全漏洞,该恶意软件感染了约60万台Mac.此后,OS X的后门程序KitM.A也被发现可对桌面截屏,而Rootpipe漏洞也难以修复. 同时,苹果对安全漏洞的修补也较为缓慢.Rootpipe漏洞最早在去年10月被发现,但直到上个月才有相应补丁,而且只修复了Yosemi

线程-我想做一个简单的抽签 用windows from 做对txt读写

问题描述 我想做一个简单的抽签 用windows from 做对txt读写 求windows from线程步骤 求windowsfrom 对txt文档读写步骤 非常感谢 解决方案 非常感谢 解决方案二: http://blog.csdn.net/xianfajushi/article/details/7498079

2014 IP年?没有我们想的那么简单

被称为IP年的2014年,似乎没有我们想的那么简单.在年前或者年中被看好或是自称非常有价值的IP,似乎并没有他们说的那么神奇. 谎言一:"小说IP牛啊,热门,易孵化,有受众." 纵观APP store畅销榜,排除腾讯系的<全民斩仙>之外,排名最靠前的由网络小说改编的手游是由深圳第一波手游研发公司研发的<蛮荒记>,排名是第107位.可见网络小说改编的手游并没有我们想象中的那么强力. 但各大中文网的发布会上,网络小说的IP被他们称为是最适合改编成游戏的IP之一,他们

spring mvc-初学spring,想做一个简单的登入验证功能,报404错误,已被困扰一天了,跪求帮助

问题描述 初学spring,想做一个简单的登入验证功能,报404错误,已被困扰一天了,跪求帮助 项目用ecliper ee开发,jdk1.7+mysql+tomcat环境.初学spring,想做一个简单的页面登入验证功能,报404错误,用了spring mvc,在Controller类里打了断点发现程序根本没有执行Controller类,检查了n遍配置文件感觉都是对的.这个bug已经困扰我一天多了,跪求帮助!! 页面错误信息 项目目录结构 web.xml 配置 applicationContex

我的编程学习路-想做一个简单对对碰游戏,如何实现游戏界面啊?

问题描述 想做一个简单对对碰游戏,如何实现游戏界面啊? 我目前是大一的学生,编程方面的东西不是很懂,想做一个简单的对对碰游戏,可是运行结果总是不能出现游戏界面,请问我要怎么让那个界面出现呢,是否还要建立包含游戏图片的库??求大神们能和我说一下都需要做些什么 解决方案 做一个简单的游戏服务器 解决方案二: 不知到你的编程环境是什么,windows下可以考虑用MFC.他是windows API 的图形界面库,因该可以满足你的要求.

微信营销不是你想的那么简单

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 微信现在很火这是不得不承认的事实,当初微博火的时候我们错过了.现在微信火了我想没人想再继续错过了.可是,看看目前微信营销的现状真的很让人忧伤,绝大多数的企业在玩微信的时候还用的微博的那一套刷微信.加粉丝.发广告. 我一直是从事seo和网络推广营销工作的,对于微博和微信只是有粗略的了解.但我认为,不管是什么营销核心实质都是内容营销.而看看我们目

想用做一个在线应用商店,大家给点思路

问题描述 目前想做一个在线的应用商店(类似iphone的应用商店,或者nokia的ovi应用商店等),主要在服务器上存放各种应用,也可以提供给用户上传自己的应用.当然我们会对用户上传的应用进行验证和管理.所有应用都放在服务器上,各种客户端通过访问服务器来下载自己想要的应用程序. 目前有两个问题,希望大家给点建议或思路: 1.客户端连接的问题,客户端可以能包括不同的客户端,怎么能让不同平台的客户端都能访问应用服务器,然后下载自己的想要的东西,也就是不同客户端与服务器通信的问题,如手机客户端,有ip