PAT A1024

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-17 03:31   31   0

方法:用数组表示整数

注意点:1,该过程的最大整数超过long long的表示范围;2,N超过int的表示范围

#include <iostream>
int index=0;
bool judge(int a[]){
 for(int i=0;i<index/2;i++){
  if(a[i]!=a[index-i-1]) return false;
 }
 return true;
}
void print(int a[],int step){
 for(int i=index-1;i>=0;i--)
  printf("%d",a[i]);
 printf("\n%d",step);
}
void addreverse(int a[]){
 int b[100]={0},carry=0;
 for(int i=0;i<index;i++){
  b[i]=(a[i]+a[index-i-1]+carry)%10;
  carry=(a[i]+a[index-i-1]+carry)/10;
 }
 if(carry!=0) b[index++]=carry;
 for(int i=0;i<index;i++){
  a[i]=b[i];
 }
}
int main(){
 int K,a[100]={0},i;
 long long N;
 scanf("%lld%d",&N,&K);
 while(N){
  a[index++]=N%10;
  N/=10;
 }
 for(i=0;i<=K;i++){
  if(judge(a)||i==K) break; 
  addreverse(a);
 }
 print(a,i);
 return 0;
}





分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP