ZJUOJ 1073 Round and Round We Go

链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=73

 

高精度乘法。一次乘以2~len,再判断是否是原字符串的一个cut-string

  有一个函数叫strstr()..用上能精简很多代码。。

 

#include<stdio.h>

#include<string.h>

char tem[80];



bool hpm(void)

{

	char rostr[200];

	char temp[80];

	strcpy(temp,tem);

	int i;

	int j;

	char t;

	bool ans=true;

	int sign=0;

	int len=strlen(temp);

	for(i=2;i<=len;i++)			//从2乘到len 

	{

		for(j=len-1;j>=0;j--)		//高精度乘法 

		{

			t=tem[j];

			temp[j]=( (tem[j]-'0')*i+sign)%10+'0';

			sign=((t-'0')*i+sign)/10;

		

		}

	strcpy(rostr,temp);

	strcpy(rostr+len,temp);

	if(strstr(rostr,tem)==NULL)

		ans=false;

	}

	return ans;

	

}



int main()

{

	

	while(scanf("%s",tem)!=EOF)

	{	

		if(hpm())

			printf("%s is cyclic\n",tem);

		else

			printf("%s is not cyclic\n",tem);

		

	}

	return 0;

}


 

你可能感兴趣的:(round)