[水题]杭电1097 A hard puzzle

http://acm.hdu.edu.cn/showproblem.php?pid=1097
开始不小心,写错了点
直接贴代码

#include <stdio.h>
int main(void)
{
    int a,b,c;
    int i,flag;
    while (~scanf("%d %d",&a,&b))
    {
        for(;;)
        {             
            if (a<10)
              break;
            else if (a>10)
              a=a%10;  
            else 
              a=0;    
        }
        flag=a;
        b=b%4;
        b=b+4; //考虑到等于零的情况 
        for(i=0;i<b-1;i++)
        {
           a=flag*a;
        }

        for(;;)
        {
            if (a<10)
              break;
            else if (a>10)
              a=a%10;  
            else 
              a=0;  
        }
        printf("%d\n",a);
    }
    return 0;
}

另附上其他人的代码供学习用

#include<stdio.h>
int main()
{
    int a,n,r,l;
    while(scanf("%d %d",&a,&n)!=EOF)
    {
          r=1;
          l=a;
          for(;;)
          {
              if((n&1)!= 0)
              {
                 r*=l;
                 r%=10;
              }
          n>>=1;
          if(n==0)break;
          l*=l;
          l%=10;
          }
   printf("%d\n",r);
   }
return 0; 
}

你可能感兴趣的:(ACM,杭电)