csu 1101

来源:互联网 发布:vb.net gridview 编辑:程序博客网 时间:2024/05/29 16:56

#include <stdio.h>#include <stdlib.h>int yes(int n){    if ((n/7)*7==n) return 1;    int flag=0;    while(n)    {        if (n%10==7) flag=1;        n=n/10;    }    if(flag) return 1;    else return 0;}int main(){    int n,m,k,a[3];    while(scanf("%d%d%d",&n,&m,&k)!=EOF){  if(n==0&&m==0&&k==0) break;    long s=0;    a[0]=m;    a[1]=(n-m)*2;    a[2]=(m-1)*2;    int i=0;    if(m==1)    {         while(k)    {         while(1)         {s+=a[i];           i++;           if(i==2) i=1;           if(yes(s)) {k--;break;}          }        }    }        else if(m==n)    {               while(k)        {           while(1)           {s+=a[i];             i+=2;             if(i==4) i=2;             if(yes(s)) {k--;break;}            }        }    }    else    while(k)    {        while(1)        {s+=a[i];          i++;          if(i==3) i=1;          if(yes(s)) {k--;break;}          }       }       printf("%ld\n",s);    }    return 0;}

      COJ-1101报数游戏,这是今天AC的第一道题,刚开始自作聪明一位很简单三两下搞定,自己测试也没错,可是提交一直出错,本来以为是s(所报的数字)开的太小,随后改成long可还是不行(事实证明不是这个原因),嗷嗷嗷 情况没考虑全面,在m=1或者是n时,m,(n-m)*2,(m-1)*2  后面两个相互交替出现时会出现“0”,也就是说会有重复的(拍掌)出现。

  呵呵呵呵后来就为了AC把它改的面目全非微笑   等我找到更好的方法再更新它


  #开blog第一天,每天都要进步#


0 0