P1050写出大问题了,请各位大佬帮忙看看
  • 板块学术版
  • 楼主封禁用户
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/5/15 07:54
  • 上次更新2023/10/28 01:25:09
查看原帖
P1050写出大问题了,请各位大佬帮忙看看
411018
封禁用户楼主2022/5/15 07:54
#include <bits/stdc++.h>
using namespace std;
int n,k;
int s[1001];
char ys[1001];
int a[1001];
int b[1001];
bool pd()
{
	for(int i=1;i<=k;i++)
	{
		if(a[i]!=b[i])
		{
			return false;
		}
	}
	return true;
}
void mul()
{
	int zj[1001];
	memset(zj,0,sizeof(zj));
	for(int i=1;i<=k;i++)
	{
		for(int j=1;j<=k;j++)
		{
			if(k-(k-i+1)*(k-j+1)+1>0)
			{
				zj[k-(k-i+1)-(k-j+1)+1]+=b[i]*a[j];
			}
		}
	}
//	memset(b,0,sizeof(b));
	for(int i=k;i>=1;i--)
	{
		int p=b[i];
		b[i]=(zj[i]+p)%10;
		b[i-1]+=(zj[i]+p)/10;
	}
}
int main()
{
	cin>>ys>>k;
	int len=strlen(ys);
	for(int i=0;i<len;i++)
	{
		s[i]=ys[i]-'0';
	}
	int cnt=k;
	for(int i=len-1;i>=len-k;i--)
	{
		a[cnt--]=s[i];
	}
	b[k]=1;
	mul();
	mul();
	memcpy(a,b,sizeof(a));
	memset(b,0,sizeof(b));
	b[k]=1;
	for(int ji=1;ji<=11;ji++)
	{
		mul();
		if(pd()==true)
		{
			cout<<ji<<endl;
			return 0;
		}
	}
	cout<<-1<<endl;
	return 0;
}
2022/5/15 07:54
加载中...