(很简单,但是很难调)
题目:已知s=a+aa+aaa+……+a……a,最后一项是由n个a组成的多位数。(a<=20,b<=20)
代码:
#include<bits/stdc++.h>
using namespace std;
inline int read()
{
register int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9')
{
x=(x<<3)+(x<<1)+(c^48);
c=getchar();
}
return x*f;
}
int a[105];
int main()
{
int t=read(),n=read();
int len=0;
if(t>=10) len=2;
else len=1;
int s2=t/10,s1=t%10;
if(len==1)
{
for(int i=1;i<=n+1;i++)
{
a[i]+=s1*(n-i+1);
if(a[i]>10) a[i+1]+=a[i]/10,a[i]%=10;
}
int top=0;
for(int i=100;i>=1;i--)
if(a[i]) {top=i;break;}
for(int i=top;i>=1;i--)
cout<<a[i];
return 0;
}
else
{
for(int i=1;i<=n*2+1;i++)
{
//cout<<a[i];
if(i%2==1)
{
int k=(i-1)/2+1;
a[i]+=s1*(n-k+1);
if(a[i]>=10) a[i+1]+=a[i]/10,a[i]%=10;
}
else
{
int k=i/2;
a[i]+=s2*(n-k+1);
if(a[i]>=10) a[i+1]+=a[i]/10,a[i]%=10;
}
}
int top=0;
for(int i=100;i>=1;i--)
if(a[i]) {top=i;break;}
for(int i=top;i>=1;i--)
cout<<a[i];
}
return 0;
}