c - Spoj LastDigit 答案错误

标签 c digits

<分区>

问题链接 Spoj LastDigit problem

我已经在我的机器上测试了我的代码,但在 SPOJ 中它显示了错误的答案。 这是我的代码-

#include<stdio.h>
int main()
{
 int num=0;
 scanf("%d",&num);
 while(num--)
 {      
  int a=0;
  unsigned long int b;
  scanf("%d\t%lu",&a,&b);
  a%=10;
  b%=100;
  if(a==0||a==1)
    printf("%d\n",a);
  else if(b==0)
    printf("1\n");
  else if(a==5)
    printf("5\n");
  else
  {
    int d=b%4,e=1;
    while(d--)
      e*=a;     
    printf("%d\n",e%10);        
  }
 }
 return 0;
}

最佳答案

你的程序有问题。您假设除 0、1、5 之外的所有数字的循环长度为 4。这是不正确的

例如,考虑输入

1
2 4

你的程序输出

1
而答案应该是 Power(2,4) 的最后一位 = 16 的最后一位 = 6

关于c - Spoj LastDigit 答案错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21308886/

相关文章:

c++ - 仅在打开编译器优化的情况下,某些地方的缓冲区溢出

c - pthread_join() 导致段错误

c - 有条件地输入数组

c++ - C++ 正十进制整数的递归函数数字逆序

java - 如何在字符串的每个数字前面添加0?

c - 使用递归确定路径

c - scanf 如何将输入(字符串)识别为整数?

c++ - 如何将输入值拆分为 4 位 vector ,例如将 n 位拆分为每个部分 vector 的半字节?

无法计算C中文本文件最后一行最后一个单词的数字

php - 从数组中删除仅包含数字的值 - PHP