首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

给定a跟n,计算a+aa+aaa+a.a(n个a)的和(大数据处理)

2012-08-02 
给定a和n,计算a+aa+aaa+a...a(n个a)的和(大数据处理)题目描述:给定a和n,计算aaaaaaa...a(n个a)的和。输入:

给定a和n,计算a+aa+aaa+a...a(n个a)的和(大数据处理)

题目描述:

给定a和n,计算a+aa+aaa+a...a(n个a)的和。

输入:

测试数据有多组,输入a,n(1<=a<=9,1<=n<=100)。

输出:

对于每组输入,请输出结果。

样例输入:
1 10
样例输出:
1234567900

从题中就可以看出,当a = 9, n = 100的时候,一个int类型的数是存不下100位的数,所以不能运用平常的方法来求,下面介绍我的解法,我声明一个向量v用来存储a+aa+aaa+a...a(n个a)的和,temp是用来存储a...a(n个a)的,从个位向高位分别相加,hight用来存储进位的。

#include <cstdio>#include <stack>using namespace std;int main(){//    freopen("1.txt", "r", stdin);    int a, n, i, t, c;    while(~scanf("%d %d", &a, &n))    {        stack<int> S;        for(c=0,i=1; i<=n; i++)        {            t = (n-i+1)*a;            S.push((t+c)%10);            c = (t+c)/10;        }        if(c>0)            S.push(c);        while(!S.empty())        {            printf("%d", S.top());            S.pop();        }        printf("\n");    }    return 0;}

但是这个有个缺点,就是当n好大,t = (n - i + 1) * a 会溢出,这个程序的有点是运行速度很快,我上面的代码当n比较大的时候,运行速度很慢。但不会溢出。



热点排行