pta 5-38 数列求和-加强版 (20分)

来源:互联网 发布:appstore不能更新软件 编辑:程序博客网 时间:2024/05/20 11:24
#include<stdio.h>#define SIZE 1000000int 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;}

0 0
原创粉丝点击