//高精度取模运算 //一开始套了个原先自己写的模板,高精度%高精度,结果TLE 2次,原因很明显,被除数可达400位,2E除以2就要做1E次减法必定TLE //所以只能自己写个最原始最朴素的才能过,考虑到除数最大是1000 //因此可以自己写一个string%int型的取模函数,这样速度会快很多,而且很简短 //改用char和scanf应该可以更快 #include<iostream> #include<string> using namespace std; int mod(string dividend,int divisor) { int p = 0;//对被除数的位数的指针 int temp = dividend[p++] - '0'; while(1) { while(temp < divisor) { if(p == dividend.size()) return temp;//如果指针超过被除数最低位还不能找到比除数小的数跳出,此时temp为答案 temp = temp * 10 + dividend[p++] - '0'; } temp %= divisor; } } int main() { int t,n,b[102]; string num; cin >> t; while(t--) { cin >> n; for(int i = 0;i < n;++i) cin >> b[i]; cin >> num; cout << "("; for(int i = 0;i < n;++i) { cout << mod(num,b[i]); if(i != n - 1) cout <<","; } cout << ")" << endl; } return 0; }