zoukankan      html  css  js  c++  java
  • 2017-10-04-morning

    改题面只有1改为0 。。

      1 #include <cstring>
      2 #include <cstdio>
      3 
      4 inline void read(int &x)
      5 {
      6     x=0; register char ch=getchar();
      7     for(; ch>'9'||ch<'0'; ) ch=getchar();
      8     for(; ch>='0'&&ch<='9'; ch=getchar()) x=x*10+ch-'0';
      9 }
     10 
     11 const int N(3233);
     12 int n,len,num[N],cnt[N];
     13 char s[N];
     14 
     15 inline bool work_1_2()
     16 {
     17     int sum=0,l=1,r=len;
     18     if(len!=n) return 0;
     19     for(int i=len; i; --i)
     20         cnt[i]=cnt[i+1]+num[i],sum+=(num[i])*i;
     21     if(sum%(len+1)==0)
     22     {
     23         for(int i=1; i<=len; ++i)
     24             printf("%d",num[i]);
     25         puts(""); return 1;
     26     }
     27     for(int l=1; l<=n; ++l)
     28     {
     29         if(num[l])
     30         {
     31             if((sum-l)%(n+1)==0)
     32             {
     33                 num[l]=0;
     34                 for(int i=1; i<=n; ++i) printf("%d",num[i]);
     35                 puts(""); return 1;
     36             }
     37         }
     38     }
     39     if(num[n+1>>1]&&(sum-(n+1>>1))%(len+1)==0)
     40     {
     41         num[n+1>>1]=0;
     42         for(int i=1; i<=len; ++i)
     43             printf("%d",num[i]);
     44         puts(""); return 1;
     45     }
     46     return 0;
     47 }
     48 inline bool work_3()
     49 {
     50     int sum=0;
     51     if(len>=n) return 0;
     52     for(int i=len; i; --i)
     53         cnt[i]=cnt[i+1]+num[i],sum+=num[i]*i;
     54     for(int i=1; i<=len; ++i)
     55     {
     56         if((sum+cnt[i])%(n+1)==0)
     57         {
     58             for(int j=1; j<i; ++j) printf("%d",num[j]);
     59             printf("0");
     60             for(int j=i; j<=len; ++j) printf("%d",num[j]);
     61             puts(""); return 1;
     62         }
     63         if((sum+cnt[i]+i)%(n+1)==0)
     64         {
     65             for(int j=1; j<i; ++j) printf("%d",num[j]);
     66             printf("1");
     67             for(int j=i; j<=len; ++j) printf("%d",num[j]);
     68             puts(""); return 1;
     69         }
     70     }
     71     if(sum%(n+1)==0)
     72     {
     73         for(int i=1; i<=len; ++i) printf("%d",num[i]);
     74         printf("0
    "); return 1;
     75     }
     76     if((sum+n)%(n+1)==0)
     77     {
     78         for(int i=1; i<=len; ++i) printf("%d",num[i]);
     79         printf("1
    "); return 1;
     80     }
     81     return 0;
     82 }
     83 inline bool work_4()
     84 {
     85     int sum=0;
     86     if(len<=n) return 0;
     87     for(int i=len; i; --i)
     88         cnt[i]=cnt[i+1]+num[i],sum+=num[i]*i;
     89     for(int i=1; i<=len; ++i)
     90     {
     91         if(!num[i]&&(sum-cnt[i])%(n+1)==0)
     92         {
     93             for(int j=1; j<i; ++j) printf("%d",num[j]);
     94             for(int j=i+1; j<=len; ++j) printf("%d",num[j]);
     95             puts(""); return 1;
     96         }
     97         if(num[i]&&(sum-cnt[i]-i+1)%(n+1)==0)
     98         {
     99             for(int j=1; j<i; ++j) printf("%d",num[j]);
    100             for(int j=i+1; j<=len; ++j) printf("%d",num[j]);
    101             puts(""); return 1;
    102         }
    103     }
    104     if((num[len]&&((sum-len)%(n+1)==0))||(!num[len]&&sum%(n+1)==0))
    105     {
    106         for(int i=1; i<len; ++i)
    107             printf("%d",num[i]);
    108         puts(""); return 1;
    109     }
    110     return 0;
    111 }
    112 
    113 int Presist()
    114 {
    115     freopen("a.in","r",stdin);
    116     freopen("a.out","w",stdout);
    117     read(n);
    118     for(;scanf("%s",s+1)!=EOF;)
    119     {
    120         len=strlen(s+1);
    121         for(int i=1; i<=len; ++i)
    122             num[i]=s[i]-'0';
    123         memset(cnt,0,sizeof(cnt));
    124         if(work_1_2()) continue;
    125         memset(cnt,0,sizeof(cnt));
    126         if(work_3()) continue;
    127         memset(cnt,0,sizeof(cnt));
    128         if(work_4()) continue;
    129         puts("-1");
    130     }
    131     return 0;
    132 }
    133 
    134 int Aptal=Presist();
    135 int main(int argc,char**argv){;}
    AC

    1 /*
    2 呃呃呃
    3 */
    未完成

                       C

    c

    1 /*
    2 呃呃呃
    3 */
    未完成
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    C#如何为程序打包发布应用(图解教程) (转)
    异步委托与多线程
    如何判断自己的WP7 SDK版本
    (转)c#实现WinRAR解压缩
    网页HTML代码大全
    byte[] ,image, bitmap之间的转换
    MS开发者应懂得知识
    StringFarmat控制字符串居中显示
    WP7模拟器的感应器和GPS模拟定位功能
    lucene.net搜索文档(pdf,doc,txt)内容
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7663482.html
Copyright © 2011-2022 走看看