poj 1047 Round and Round We Go

枚举下,再验证,高精度乘法那需要处理好,0可以在最前端
#include <stdio.h>
#include 
<string.h>

char str[100];
char num[100];

void turn(int len)
{
    
int mid=len>>1;
    
char temp;
    
for ( int i= 0; i < mid; i++ )
    {
        temp
= str[i];
        str[i]
=str[len-1-i];
        str[len
-1-i]= temp;
    }
}

int calu(int k, int len)
{
    memset(num, 
0sizeof(num));
    
int i, t;
    
for ( i = 0; i < len; i++ )
    {
        t
= k*str[i];
        
if (t <= 9)
        {
            num[i]
+=t;
            
if (num[i]>9)
            {
                num[i
+1]=num[i]/10;
                num[i]
%=10;
            }
        }
        
else
        {
            num[i]
+=t%10;
            
if (num[i]>9)
            {
                num[i
+1]=num[i]/10;
                num[i]
%=10;
            }
            num[i
+1]+=t/10;
        }
    }
    
if (num[i+1]) i++;
    
return i;
}

int cmp(int len1, int len2)
{
    
int i, j;
    
if (len2 != len1 ) return 0;
    
for ( i = 0; i < len1; i++)
    {
        
if (str[i]==num[0])
        {
            
for ( j = 0; (j < len1 ) ; j++ )
                
if (str[(i+j)%len1] != num[j%len2])
                    
break;
            
if ( j == len1 ) return 1;
        }
    }
    
return 0;
}

int main()
{
    
while (EOF != scanf("%s", str))
    {
        printf(
"%s is ", str);
        
int len= strlen(str), i, flag=1;
        
for ( i = 0; i < len; i++ )
        {
            str[i]
-='0';
        }
        turn(len);
        
for ( i = 1; i <= len; i++ )
        {
            
int len2= calu(i, len);
            
if ( !cmp(len, len2) )
            {
                printf(
"not cyclic\n");
                flag
=0;
                
break;
            }
        }
        
if ( flag ) printf("cyclic\n");
    }
    
return 0;
}

posted on 2011-08-05 23:21 purplest 阅读(335) 评论(0)  编辑 收藏 引用 所属分类: 高精度


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年8月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿

随笔分类(70)

随笔档案(68)

ACMer

搜索

最新随笔

最新评论