#include<stdio.h>
#define SIZE 1000000
int max=1;//最大位数
void init(short int * in,int a,int b){
for(int i=0;i<b;i++){
in[i]=a;
}
}
void k(short * in){
for(int i=SIZE-1;i>0;i--){
in[i]=in[i-1];
}
in[0]=0;
}
void sum(short * in1,int a,int b){
int count;
int t = 0, j = 0;
for(int i = b; i > 0; i--)
{
count = a * i + t; //从最低位次开始,逐渐分离,t用来存放非本位次的数字
t = count / 10; //把数字count中的非本位次的数字分离放在t中暂时存放,等会再加到下一位次上
in1[j] = count % 10; //按照位次把分离的数字存入定义好的顺序表中,只取余数,也就是非t中的数字
j++;
}
if(t > 0) //当已经分离存取完成后,若剩余的数字仍不为0,也就是还有比当前最高位的数字存在的数字,继续存入顺序表中
{
in1[j] = t;
j++;
}
if(in1[j]!=0){
max=j+1;
}else{
max=j;
}
}
void show(short * in){
for(int i=max-1;i>-1;i--){
printf("%d",in[i]);
}
//printf("\nmax%d",max);
}
int main()
{
short data[SIZE];
//init(data,0,100000);
//short data_temp[SIZE];
int a,b;
scanf("%d %d",&a,&b);
if(a==0|b==0){
show(data);
return 0;
}
sum(data,a,b);
show(data);
return 0;
}
2.
#include<iostream>
using namespace std;
int main(void)
{
int A, N,flag,temp;
long j=0;
int *num;
cin >> A >> N;
if (N == 0)
{
cout << N;
}
else
{
num = new int[N];
flag = 0;
for (int i = N; i >= 1; i--)
{
temp = A*i + flag;
flag = temp / 10;
num[j] = temp % 10;
j++;
}
if (flag > 0)
{
num[j] = flag;
}
else
{
j--;
}
for (int i = j; i >= 0; i--)
{
cout << num[i];
}
//delete[] num;
}
return 0;
}