이 문제를 해결하려고했습니다 : http://www.spoj.com/problems/LASTDIG/ 기본 및 지수를 취하고 지수 계산 결과의 마지막 숫자를 출력해야하지만 온라인 판사는 내 프로그램 일반적인 테스트 케이스에서는 잘못된 대답을하지만 내 산출물은 옳습니다.지수의 마지막 숫자 - 오답 - C#
NB : 나는 빠른 모듈러 지수화 알고리즘을 사용해야합니다, 여기에 대한 좋은 설명입니다 : https://www.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/fast-modular-exponentiation
using System;
public class Test
{
public static void Main()
{
int val = Convert.ToInt32(Console.ReadLine());
for (int i=0; i<val; i++)
{
string input = Console.ReadLine();
int a = Convert.ToInt32(input.Split()[0]);
int b = Convert.ToInt32(input.Split()[1]);
if (a==0)
{
Console.WriteLine(0);
} else if(b==0)
{
Console.WriteLine(1);
} else {
a=a%10;
string bToBinary=Convert.ToString(b, 2);
double temp = 1;
for(int j=bToBinary.Length-1, k=0; j>=0; j--, k++)
{
if (bToBinary[j] == '1')
{
temp = temp*(Math.Pow(a, Math.Pow(2, k)));
}
}
Console.WriteLine(temp%10);
}
}
}
}
샘플 입력 :
9
6
4
1
:이 프로그램에서
4
3 10
6 2
14 11
1 0
출력
은 판사가 시험에 사용 사례와 답을 제공 했 같은 프로그램을 쓸 수 있어야 3
와 동일? –
아니, 슬프다. 그래서 나는 여기에있다. –
여기에서는 Fast Modular Exponentiation이 실제로 필요하지 않습니다. 문제는 기본의 마지막 자리를보고 다양한 지수의 마지막 자리에서 패턴을 계산하여 계산할 수있는 마지막 숫자 만 요구합니다. – Shubham