我試圖實現一個簡單的程序,它需要基數和指數,並輸出指數運算結果的最後一位數,但是網上裁判說我的程序給出了錯誤的答案。什麼可能是錯的?C++:指數中的最後一位數字 - 錯誤的答案
P.S.程序的約束必須是700 KB在這裏是沒有問題的(我可以刪除空格和註釋,並使用一個字母變量,以避免這個問題)
#include <iostream>
using namespace std;
int main()
{
int t; // t - number of test cases
cin >> t;
cin.get();
for (int i = 0; i < t; ++i)
{
int base, exp; // base - base, exp - exponent
cin >> base >> exp;
cin.get();
if (exp == 0)
cout << 1 << endl;
else if (base % 10 == 0)
cout << 0 << endl;
else if (base % 10 == 1)
cout << 1 << endl;
else if (base % 10 == 5)
cout << 5 << endl;
else if (base % 10 == 6)
cout << 6 << endl;
else if (base % 10 == 2 || base % 10 == 3 || base % 10 == 7 || base % 10 == 8)
{
int pattern = exp % 4; // pattern repeats every 4th exponent
int lastDigit = base; // lastDigit - result of program
if (pattern == 0)
pattern = 4;
for (int i = 1; i < pattern; ++i)
lastDigit = (lastDigit * base) % 10;
cout << lastDigit << endl;
}
else if (base % 10 == 4 || base % 10 == 9)
{
int pattern = exp % 2; // pattern repeats every 2nd exponent
int lastDigit = base; // lastDigit 0 result of program
if (pattern == 0)
pattern = 2;
for (int i = 1; i < pattern; ++i)
lastDigit = (lastDigit * base) % 10;
cout << lastDigit << endl;
}
}
}
這裏有樣品。
INPUT
3 10
6 2
7 3123123
0 1
1 0
0 0
OUTPUT
9
6
3
0
1
1
在此先感謝。
編輯:
原來的問題:http://www.spoj.com/problems/LASTDIG/
您應該添加輸出錯誤答案的測試用例;否則你會有效地要求你去調試你的應用程序,而無需繼續。 – 2013-04-08 18:21:14
我沒有任何,如果我有,我會自己調試它,但對於我給它的每個輸入給出正確的答案。事情是網上裁判抱怨,對不起 – 2013-04-08 18:22:25
如果你還沒有做過,在每個角落的情況下,你可以考慮測試它。 – NPE 2013-04-08 18:23:54