gpt4 book ai didi

C++:指数中的最后一位 - 错误答案

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:28:48 25 4
gpt4 key购买 nike

我正在尝试实现一个简单的程序,该程序采用底数和指数并输出求幂结果的最后一位数字,但在线判断说我的程序给出了错误的答案。有什么问题吗?

附言程序的限制必须是 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/

最佳答案

这是错误的:

int lastDigit = base; // lastDigit - result of program

您应该对 10 取模以获得最后一位数字。

稍后您确实执行了 10 的模运算,但不是在所有情况下(不是在 for 循环不需要任何迭代时)。所以在某些情况下,您的代码会输出一个多于一位数的数字。

关于C++:指数中的最后一位 - 错误答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15886133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com