posts - 0,comments - 0,trackbacks - 0
三种情况分别枚举 细节要注意 总体还是水题。
PS:枚举每一个插入或者删除或者改变的位置,判是否可行。
#include<stdio.h>
#include
<string.h>
long n,i,j,l,sum;
char s[1001];
int main()
{
  scanf(
"%d",&n);
  
while (scanf("%s",s)!=EOF)
  {
    l
=strlen(s);
    
if (l==n)
    {
             
for (i=0;i<=l-1;i++)
               
if (s[i]=='1')
                 sum
+=i+1;
             
if (sum%(n+1)==0)
               printf(
"%s\n",s);
             
else
               
for (i=0;i<=l-1;i++)
               {
                 
if (s[i]=='1')
                 {
                   sum
=0;
                   
for (j=0;j<=l-1;j++)
                     
if (j!=&& s[j]=='1')
                       sum
+=j+1;
                   
if (sum%(n+1)==0)
                   {
                     s[i]
='0';
                     printf(
"%s\n",s);
                     
break;
                   }
                 }
               }  
    }
    
else if (l==n+1)
    {
               
for (i=0;i<=l-1;i++)
               {
                 sum
=0;
                 
for (j=0;j<=i-1;j++)
                   
if (s[j]=='1')
                     sum
+=j+1;
                 
for (j=i+1;j<=l-1;j++)
                   
if (s[j]=='1')
                     sum
+=j;
                 
if (sum%(n+1)==0)
                 {
                    
for (j=i;j<=l-2;j++)
                      s[j]
=s[j+1];
                    s[l
-1]=0;
                    printf(
"%s\n",s);
                    
break;
                 }
               }
    }
    
else if (l==n-1)
    {
                
for (i=-1;i<=l-1;i++)
                {
                  sum
=0;
                  
for (j=0;j<=i;j++)
                    
if (s[j]=='1')
                      sum
+=j+1;
                  
for (j=i+1;j<=l-1;j++)
                    
if (s[j]=='1')
                      sum
+=j+2;
                  
if (sum%(n+1)==0)
                  {
                     
for (j=l;j>=i+2;j--)
                       s[j]
=s[j-1];
                     s[i
+1]='0';
                     printf(
"%s\n",s);
                     
break;
                  }
                  sum
=i+2;
                  
for (j=0;j<=i;j++)
                    
if (s[j]=='1')
                      sum
+=j+1;
                  
for (j=i+1;j<=l-1;j++)
                    
if (s[j]=='1')
                      sum
+=j+2;
                  
if (sum%(n+1)==0)
                  {
                     
for (j=l;j>=i+2;j--)
                       s[j]
=s[j-1];
                     s[i
+1]='1';
                     printf(
"%s\n",s);
                     
break;
                  }
                }
    }
  }
}
posted on 2011-06-27 17:21 梦转千寻 阅读(64) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航:   博客园   博客园最新博文   博问   管理