求助站外题
查看原帖
求助站外题
738306
chasing_dream楼主2022/8/20 17:41

(很简单,但是很难调)

题目:已知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;
}

2022/8/20 17:41
加载中...