打印

程序编写问题

[复制链接]
1467|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
txcy|  楼主 | 2013-3-31 15:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
无冕之王| | 2013-3-31 15:19 | 只看该作者
试试下面的代码
//1^2+2^2+3^2+...+n^2<1000
//可利用公式 1^2+2^2+3^2+...+n^2=n(n+1)(2n+1)/6
#include<stdio.h>
int CalcMaxN(int sum)
{
    int i = 0;   
    for (i=0; i < sum; i++)
    {
        if (i*(i+1)*(2*i+1)/6 > sum)
        {
            break;
        }
    }
    return i - 1;
}
int main()
{
    int min = CalcMaxN(1000);
    printf("min is: %d\n", min);
    getchar();
    return 0;
}

使用特权

评论回复
板凳
秋天落叶| | 2013-3-31 15:41 | 只看该作者
可以试试LS的程序

使用特权

评论回复
地板
sinadz| | 2013-3-31 15:46 | 只看该作者
#include <iostream>

int calc_max_n(int limit)
{
    int sum = 0;

    for (int i = 1; ; ++i) {
        sum += i * i;
        if (sum >= limit)
            return i - 1;
    }
}

int main(int argc, char *const argv[])
{
    int max_n = calc_max_n(1000);
    std::cout << max_n << std::endl;
    return 0;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

274

主题

2106

帖子

0

粉丝