这道题看起来蛮简单,不过也有一个误区,就是大数的长度<=400,这是非常大的一个数字,超过了long long的数据类型。因此,只能用字符数组来存储。
在实际实现时,字符数组如何求模运算也是需要考虑清楚的,我采用的是逐步移位,把余数往后移动。
//#include <stdlib.h>
#include <iostream>
#include <string>
using namespace std;
#define N 100
#define M 400
int Array[N];
int Result[N];
char BigNum[M];
int main()
{
int count;
cin>>count;
int n;
for(int i=0;i<count;i++)
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>Array[i];
}
string str;
cin>>str;
//表示实际长度
int k=0;
for(;k<str.length();k++)
{
BigNum[k]=str[k];
}
for(int j=0;j<n;j++)
{
int temp=0;
//大数实际长度为k
for(int i=0;i<k;i++)
{
temp*=10;
temp+=(BigNum[i]-'0');
temp%=Array[j];
}
Result[j]=temp;
}
cout<<'(';
for(int i=0;i<n;i++)
{
cout<<Result[i];
if(i!=n-1)
{
cout<<',';
}
}
cout<<')'<<endl;
}
//system("pause");
return 0;
}