标题:求s(n)=a+aa+aaa+........+aaaaaa(n个a)
只看楼主
liumang_D
Rank: 2
来 自:计算机
等 级:论坛游民
威 望:1
帖 子:89
专家分:50
注 册:2008-10-20
得分:0 
回复 26# 的帖子
呵呵,我只是写了让楼主容易理解而已,在说,这样的程序,实际上没有什么用处,还不是考考你的程序思路而已,数值大小,我想应该不是这道题的关键问题吧
2008-11-18 16:48
风居住的街道
Rank: 1
等 级:新手上路
帖 子:374
专家分:0
注 册:2008-10-24
得分:0 
[bo][un]liumang_D[/un] 在 2008-11-18 16:48 的发言:[/bo]

呵呵,我只是写了让楼主容易理解而已,在说,这样的程序,实际上没有什么用处,还不是考考你的程序思路而已,数值大小,我想应该不是这道题的关键问题吧

如果编程的时候抱着“别人不会用”的观点来做的话,干脆不要学这一行了。
如果这是一道ACM题目,那么考点恰恰就是数值大小。
思路是什么?思路就是你考虑问题的全面性和透彻性。你这么说,就算是单纯考思路,你也不及格了。
2008-11-18 17:16
liumang_D
Rank: 2
来 自:计算机
等 级:论坛游民
威 望:1
帖 子:89
专家分:50
注 册:2008-10-20
得分:0 
呵呵,你说的也不是没有道理,我也没有否定思考这个数值问题,正因为我思考了,所以我限定了范围。
2008-11-18 18:00
风居住的街道
Rank: 1
等 级:新手上路
帖 子:374
专家分:0
注 册:2008-10-24
得分:0 
从数学的角度,想想看,这题目有没有简单高效的算法。
2008-11-18 18:46
liumang_D
Rank: 2
来 自:计算机
等 级:论坛游民
威 望:1
帖 子:89
专家分:50
注 册:2008-10-20
得分:0 
[bo][un]风居住的街道[/un] 在 2008-11-18 18:46 的发言:[/bo]

从数学的角度,想想看,这题目有没有简单高效的算法。

本人认为作为一个程序员,应该用电脑的思想来思考程序的算法。希望高手指点迷津。
2008-11-18 19:05
风居住的街道
Rank: 1
等 级:新手上路
帖 子:374
专家分:0
注 册:2008-10-24
得分:0 
- -请注意,电脑的思想说白了就是两个字:数学。

我写了一个高精度的,发现答案非常有规律,所以想验证一下,不过目前为止还没有结果。
2008-11-18 19:24
liumang_D
Rank: 2
来 自:计算机
等 级:论坛游民
威 望:1
帖 子:89
专家分:50
注 册:2008-10-20
得分:0 
回复 36# 的帖子
个人认为。电脑最擅长做的事情莫过于循环处理!期待你的程序,小弟叫你一声大哥了!
2008-11-18 19:59
风居住的街道
Rank: 1
等 级:新手上路
帖 子:374
专家分:0
注 册:2008-10-24
得分:0 
电脑擅长快速处理,而不仅仅是循环,事实上,电脑考虑的问题越多,处理就越快,这是个反比例的关系……
程序代码:
//s(n)=a+aa+aaa+aaaa....
#include <stdio.h>
#include <stdlib.h>

short va[10000] = {0}, vb[10000] = {0}, blast = 1;

int main(void)
{
    int i, n, a[4];
    scanf("%d%d", &n, a);
    for (i = 1; i < 4; i++)
        a[i] = a[i-1] * 10 + a[0];
    for (i = 0; i < n; i++)
    {
        int tmp = i / 4, j;
        va[tmp] = a[i%4];
        if (blast < tmp) blast = tmp;
        for (j = tmp = 0; j <= blast; j++)
        {
            tmp += va[j] + vb[j];
            vb[j] = tmp % 10000;
            tmp /= 10000;
            if (j == blast && tmp != 0)
                blast++;
        }
    }
    printf("%hd", vb[blast]);
    while (blast) printf("%04hd", vb[--blast]);
    putchar('\n');
    return 0;
}

2008-11-18 20:05
woshiyun
Rank: 1
等 级:新手上路
威 望:2
帖 子:348
专家分:0
注 册:2008-6-16
得分:0 
#include <stdio.h>
#define N 10000
int main()
{
    int a,n,jinwei,pos;
    char str[N]={0};
    printf("input a and n:");
    scanf("%d%d", &a, &n);
    for(pos=N-2,jinwei=0;n;n--,jinwei=(a*n+jinwei)/10)str[pos--]=(a*n+jinwei)%10+'0';
    jinwei?(str[pos]=jinwei+'0'):pos+=1;
    printf("s=%s\n",str+pos);
    return 0;
}
2008-11-18 20:45
foxczh
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-11-15
得分:0 
[bo][un]woshiyun[/un] 在 2008-11-18 20:45 的发言:[/bo]

#include
#define N 10000
int main()
{
    int a,n,jinwei,pos;
    char str[N]={0};
    printf("input a and n:");
    scanf("%d%d", &a, &n);
    for(pos=N-2,jinwei=0;n;n--,jinwei=(a*n+jinwei)/ ...


解释下行不……
PS:随便说一句。。。编译不通过……
2008-11-18 21:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-244831-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014823 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved