题目描述
给定a和n,计算a+aa+aaa+a…a(n个a)的和。
输入描述:
测试数据有多组,输入a,n(1<=a<=9,1<=n<=100)。
输出描述:
对于每组输入,请输出结果。
示例1
输入
复制
1 10
输出
复制
1234567900
题目解析:首先明确整型并不表示出大的数字,其次可以使用数组,只要记录进位和本位
代码:
#include<stdio.h>
#include<math.h>
#include<algorithm>
#include<string.h>
#include<iostream>
#include<iomanip>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<queue>
using namespace std;
int main()
{
int a,n;
while(cin >> a >> n){
int d[n + 1]; //超出了计算机表示的范围,所以使用数组
memset(d , 0 , sizeof(d));
int k = 0;
for(int i = n; i >= 0; i--){ //我是从数组最后一位开始加的
d[i] = (a * i + k) % 10; //个位有n个a相加,十位有n-1个a相加
k = (a * i + k) / 10; //进位
}
int index = 0;
while(d[index] == 0){
index++;
}
for(int i = index; i <= n; i++){
cout << d[i];
}
cout << endl;
}
return 0;
}
/*
#include<stdio.h>
#include<math.h>
#include<algorithm>
#include<string.h>
#include<iostream>
#include<fstream>
#include<iomanip>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<queue>
using namespace std;
const int N = 200;
int main()
{
int n , count;
int d[N];
while(cin >> n >> count){
memset(d , 0 , sizeof(d));
int t = 0 , k = 0;
for(int i = count ; i >= 1; i--){
d[t] = (n * i + k) % 10;
k = (n * i + k) / 10;
t++;
}
while(k != 0){
d[t] = k % 10;
k /= 10;
t++;
}
for(int i = t-1 ; i >= 0 ; i--){
cout << d[i];
}
cout << endl;
}
return 0;
}
*/