题目
pata1023
题目思路
常规题目,利用结构体存储大整数,然后遍历整数,在count数组中计数,乘以2后再次计数即可。
参考代码
#include<iostream>
#include<cstring>
using namespace std;
typedef struct{
int a[100];
int len;
}bgin;
bool ispa(bgin b);
bgin change(char c[]);
bgin add(bgin c);
void pt(bgin b);
int main()
{
bgin b;
char c[20];
int n=0,k=0;
scanf("%s %d",c,&n);
b=change(c);
while(!ispa(b)&&k<n)
{
b=add(b);
k++;
}
pt(b);
printf("\n%d",k);
return 0;
}
bool ispa(bgin b)
{
int i=0;
for(int i=0;i<b.len/2;i++)
{
if(b.a[i]!=b.a[b.len-i-1])
return false;
}
return true;
}
bgin add(bgin c)
{
bgin b;
int r=0;
b.len=c.len;
for(int i=0;i<b.len;i++)
{
r=r+c.a[i]+c.a[b.len-i-1];
b.a[i]=r%10;
r=r/10;
}
if(r!=0)
{
b.a[b.len]=r;
b.len++;
}
return b;
}
void pt(bgin b)
{
for(int i=b.len-1;i>=0;i--)
{
printf("%d",b.a[i]);
}
}
bgin change(char c[])
{
bgin b;
b.len=strlen(c);
for(int i=0;i<b.len;i++)
{
b.a[i]=c[strlen(c)-i-1]-'0';
}
return b;
}