⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pku 1046 高精度乘法+循环数.txt

📁 ACM资料大集合
💻 TXT
字号:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <algorithm>
using namespace std;

//PKU 1046
//高精度乘法+循环数
#define NMAX 100
void mullow(int a[],int b,int ans[])
{
	int i,len;
	int tmp[NMAX]={0};
	len=a[0];
	for(i=1;i<=len;i++)
	{
		tmp[i]+=a[i]*b;
		tmp[i+1]=tmp[i]/10;
		tmp[i]%=10;
	}
	len++;
	while(tmp[len]>=10)
	{
		tmp[len+1] = tmp[len]/10;
		tmp[len] %=10;
		len++;
	}
	while(len>1 && tmp[len]==0) len--;
	tmp[0]=len;
	for(i=0;i<=tmp[0];i++) ans[i]=tmp[i];
}

int compare(int a[],int b[])
{
	int i;
	if(a[0]>b[0]) return 1;
	if(a[0]<b[0]) return -1;
	else
	{
		for(i=a[0];i>=1;i--)
		{
			if(a[i]>b[i]) return 1;
			if(a[i]<b[i]) return -1;
		}
		return 0;
	}
}

void solve(int a[])
{
	int i,j,k,t,flag,tt;
	int b[NMAX],c[NMAX];

	tt=1;
	for(i=1;i<=a[0];i++)
	{
		flag=0;
		memset(b,0,sizeof(b));
		memset(c,0,sizeof(c));
		mullow(a,i,b);
//		for(j=b[0];j>=1;j--)
//			printf("%d",b[j]);
//		printf("\n");
		if(compare(a,b)==0) flag=1;
		else
		{
			for(j=2;j<=b[0];j++)
			{
				c[0]=b[0];
				for(k=j,t=0;k<=b[0];k++)
					c[++t]=b[k];
				for(k=1;k<j;k++)
					c[++t]=b[k];
				if(compare(a,c)==0) flag=1;
			}
		}
		if(flag==0) tt=0;
	}
	for(j=a[0];j>=1;j--)
		printf("%d",a[j]);
	if(1==flag)
		printf(" is cyclic\n");
	else
		printf(" is not cyclic\n");
}

int main()
{
	int a[NMAX],i,j;
	char str1[NMAX];
	while(scanf("%s",str1)!=EOF)
	{
		a[0]=strlen(str1);
		for(i=a[0]-1,j=1;i>=0;i--,j++) a[j]=str1[i]-'0';
//		for(j=a[0];j>=1;j--)
//			printf("%d",a[j]);
//		system("pause");
		solve(a);
	}
	return 0;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -