fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define FR0(i,N) for(i=0;i<(N);i++)
  4. #define FR1(i,N) for(i=1;i<=(N);i++)
  5. #define FRN(i,k,N) for(i=k;i<(N);i++)
  6. #define pf printf
  7. #define db double
  8. #define max3(a,b,c) max(max(a,b),c)
  9. #define min3(a,b,c) min(min(a,b),c)
  10. #define sci(n) scanf("%d",&n)
  11. #define scl(n) scanf("%lld",&n)
  12. #define scf(n) scanf("%f",&n)
  13. #define scd(n) scanf("%lf",&n)
  14. #define scs(s) scanf("%s",&s)
  15. #define scll(n) scanf("%%I64d",&n)
  16. #define PI acos(-1.0)
  17. #define LL long long
  18. #define MX 1000005
  19. #define MOD 1000000007
  20. typedef long long int ll;
  21. bool status[1100002];
  22. /* Problem description:
  23. If any problem need find last digit of m^n .Then you find base one digit and power last two digit using;
  24. */
  25. int mypow(int base,int power)
  26. {
  27. int total;
  28. if(base==0) return 0;
  29. if(power==0)
  30. {
  31. total=1;
  32. }
  33. else
  34. {
  35. total=base;
  36. }
  37. for(int i=1;i<power;i++)
  38. {
  39. total=total*base;
  40. total=total%10;
  41. }
  42. return total;
  43. }
  44. int main()
  45. {
  46. int ibase,ipower,temp;
  47. string sbase,spower;
  48. while(cin>>sbase>>spower)
  49. {
  50. if(sbase=="0" && spower=="0") break;
  51. ibase=sbase[sbase.size()-1]-48;
  52. if(spower.size()>=2)// we need n's last two digit
  53. {
  54. temp=spower[spower.size()-1]-48;
  55. ipower=(spower[spower.size()-2]-48)*10+temp;
  56. }
  57. else
  58. {
  59. ipower=spower[spower.size()-1]-48;
  60. }
  61. if(ipower==0)//last two digit zero then
  62. {
  63. temp=mypow(ibase,99);//_m ^ 100 = _m ^ 99 * _m
  64. temp=(temp*ibase)%10;
  65. }
  66. else
  67. {
  68. temp=mypow(ibase,ipower)%10;
  69. }
  70. cout<<temp<<endl;
  71. }
  72.  
  73. }
  74.  
Success #stdin #stdout 0s 4492KB
stdin
2 2
2 5
0 0
stdout
4
2