我测试了好久都没有找出问题,求大佬帮助给出一组hack数据
题目:SP26368(链接)
//
// main.cpp
// SP26368 PWRANDMOD - Power and Mod
//
// Created by SkyWave Sun on 2022/9/27.
//
#include <iostream>
#include <cstring>
using namespace std;
unsigned __int128 quickPow(const unsigned __int128 &a, unsigned __int128 &b, const unsigned __int128 &MOD) {
unsigned __int128 ans = 1;
unsigned __int128 base = a;
base %= MOD;
while (b) {
if (b & 1) {
ans *= base;
ans %= MOD;
}
base *= base;
base %= MOD;
b >>= 1;
}
return ans%MOD;
}
char str1[30];
char str2[30];
char str3[30];
char anstring[30];
int main(int argc, const char * argv[]) {
int t;
scanf("%d",&t);
while (t--) {
unsigned __int128 a = 0,b = 0,m = 0;
scanf("%s%s%s",str1,str2,str3);
unsigned short len1 = strlen(str1);
unsigned short len2 = strlen(str2);
unsigned short len3 = strlen(str3);
for (int i = 0; i<len1; ++i) {
a *= 10;
a += str1[i] - '0';
}
for (int i = 0; i<len2; ++i) {
b *= 10;
b += str2[i] - '0';
}
for (int i = 0; i<len3; ++i) {
m *= 10;
m += str3[i] - '0';
}
unsigned __int128 ans = quickPow(a, b, m);
if (ans == 0) {
putchar('0');
putchar('\n');
continue;
}
unsigned short pos = 0;
while (ans) {
anstring[pos++] += ans % 10 + '0';
ans /= 10;
}
unsigned short len4 = strlen(anstring);
for (int i = len4 - 1; i>=0; --i) {
putchar(anstring[i]);
}
putchar('\n');
}
return 0;
}